2012-07-04 9 views
0

지금 2 일이 지났지 만 여전히이 문제를 해결할 수 없습니다. 나는 문제가 무엇 확실하지 않다, 그래서 기본적으로 나는 JQuery와 아약스 를 통해 PHP 함수를 호출하려고하지만 아무것도 작동하지 않습니다 ... 여기 내 코드는jquery ajax를 통해 함수 호출

아약스

$(document).ready(function() { 
    $("#idCheck1").click(function(){ 
     $.ajax({ 
      url:'../../../../Controller/PostsController.php', 
      data: {action: 'update_checkbox'}, 
      success:function(result){ 
//    $("#dsa").html(result); 
      } 
     }); 
    }); 
}); 

<?php echo $this->Form->create("Posts", array("action" => "update_checkbox", "id" => "checkingBox")) ?> 
        <td> 
         <?php 
         echo $this->Form->input('Post.' . $i . '.id', array("type" => "hidden", "label" => false, "value" => $sum['posts']['id'])) 
         ?> 
         <?php 
         echo $this->Form->input('Post.' . $i . '.done', array("type" => "checkbox", "label" => false, "value" => "1", "id" => "idCheck1")) 
         ?> 
        </td> 
       </tr> 
       <?php 
       $i++; 
      } 
      ?> 

     </table> 
     <?php echo $this->Form->end(); ?> 

제어기

public function update_checkbox() { 
     // debug($this->data); 
     $var = $this->Post->saveCheckBox($this->data); 
     $this->set("result", $var); 
    } 
,

모델

public function saveCheckBox($checkbox) { 
     debug($checkbox); 
     $this->saveAll($checkbox['Post']); 
    } 
+0

직접 디버깅 해 보셨습니까? 그렇다면 어디서 잘못됩니까? 예 :요청이 이루어 졌다면, 결과는 무엇입니까? – PeeHaa

+0

브라우저에서이 URL에 액세스 할 수 있습니까 : 'url :'../../../../ Controller/PostsController.php''? – PeeHaa

+0

실제 문제는 무엇입니까? .click (function() {이 실행 중임을 확인했습니다 ... PostsController.php에 HTTP 요청이 있음을 확인 했습니까? ... \t 오류 : function (result) {}을 $ .ajax에게 경고 메시지를 보내어 다른 유용한 정보가 있는지 확인하십시오. – DaveHogan

답변

2

URL입니다

url:'../../../../Controller/PostsController.php' 

잘못 보인다. 이것은 브라우저를 통과하는 AJAX 요청이기 때문에 브라우저 계층의 위쪽으로 이동하려고하는 상대 경로는 사용할 수 없습니다. 브라우저 URL은 그런 방식으로 작동하지 않기 때문입니다. ,

url:'http://localhost/Controller/PostsController.php' 

또는

url:'/Controller/PostsController.php' 

절대 URL이 첫 번째 옵션 :이 웹 서버를 통해 전달되도록 그 요청을해야 URL이 다음 중 하나를 같이한다 즉 그러나 이것은 또한 코드의 유연성을 약간 떨어 뜨립니다 (도메인을 localhost에서 다른 것으로 변경한다고 가정). 두 번째 옵션은 상대 URL이지만 웹 서버의 도메인 루트에 대한 상대 URL입니다 (예를 들어 여전히 localhost/Controller ...로 확인되는 경우).

게시 한 내용에 따라 PHP 파일은 사이트의 문서 루트에있는 컨트롤러/폴더에 있어야합니다. 그러나 코드 구조는 어떤 종류의 프레임 워크 (예 : Zend, Symfony 또는 CodeIgniter)를 사용하고 있음을 나타냅니다. 그렇다면 사용하는 프레임 워크에 대한 정보를 게시하면 답변을 변경할 수도 있으므로 도움이 될 것입니다.

CakePHP의의 경우 UPDATE

, 당신은 다음과 같아야 URL을 의미 전면 컨트롤러를 통해 컨트롤러에 액세스해야합니다

url:'/posts' 

업데이트 2

jquery 측에서는 완전한 Ajax 요청 예제는 다음과 같을 수있다 :

$(".idCheck").click(
    function(){ 
     var idVal = $(this).val(); 

     $.ajax({ 
     url:'/posts/update_checkbox', 
     data: {id: idVal }, 
     type: 'POST', 
     success:function(result){ 
      $("#dsa").html(result); 
     } 
     }); 
    }); 

URL에 이미 update_checkbox 작업 (예 : 실행하려는 작업에 대한 전체 URL)이고 데이터 객체에는 서버에 보내려는 클릭 된 요소의 값이 들어 있습니다. 완전한 양식을 보내고 싶다면 $ ('# myformselector'). serialize()를 사용하여 양식의 모든 입력을 ajax 요청의 data 특성에 적합한 객체로 변환하십시오.

+0

** 절대 경로는 절대 사용하지 마십시오 ** 예 : http : // localhost/Controller/PostsController.php'. 프로덕션 환경이나 다른 도메인으로 파일을 이동하는 경우 URL이 모두 작동하지 않습니다. OP :-) – PeeHaa

+0

에 대한 추가 강조 : 사용중인 프레임 워크에 대한 정보를 게시하면 도움이됩니다. "-> 질문에 케이크 – PeeHaa

+0

님의 답장을 보내 주셔서 감사합니다. URL을 변경하려고했습니다. 그러나 둘 중 하나가 작동하지 않습니다 : (그래서 내가 크롬에서 디버깅을했을 때 오류가 나타났습니다 http://i49.tinypic.com/slmmwl.jpg – Catherine