2012-05-11 5 views
5

codeigniter 및 JQuery Ajax Post에 문제가 있습니다.Jquery AJAX가 서버 측에서 성공적으로 실행되었지만 오류 500을 반환했습니다.

내에 javscript

 $('.remove').click(function(){ 
     var category=event.target.id; 
     var id=$('input[name=article_id]').val(); 
     var p={}; 
     p['id']=id; 

     $.ajax({ 
      type: "POST", 
      url: "/backend.php/blog/removeCategories", 
      async:true, 
      cache:false, 
      data: {id: id, category: category } 
      }).done(function(msg){ 
       jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){}); 
      }); 

내 CodeIgniter의의 컨트롤러

function removeCategories(){ 
     $id=$_POST['id']; 
     $category_id=$_POST['category']; 

     $this->article->removeCategory($category_id,$id); 
    } 

난 항상 서버에서 수신 오류 500가 있기 때문에 작업 아약스 기능을 얻을 수 없습니다. 방화 광이 리소스를로드하는 중 오류가 있음을 반환하지만 removeCategories 함수는 어쨌든 실행되었습니다.

+0

서버 측 로깅을 수행되지 않으며,이 작업을 수행하면서 그것은 또한 사망하고 몇 가지 치명적인 오류가 있습니다. PHP 오류 로깅을 활성화하고 치명적인 오류가 있는지 조심하십시오. – hakre

답변

3

오류는 모델에있을 수 있습니다. Chrome 개발자 도구 키트를 사용하여 반환 된 페이지 콘텐츠가 무엇인지 확인하십시오. HTTP CODE 500은 일반적으로 PHP 어딘가에 문법 문제가 있기 때문에 서버 오류를 의미합니다.

또한 ajax 호출에서 success:error:을 사용해야합니다. 이렇게하면 코드에서 오류가 발생하면 실행을 중지 할 수 있습니다.

왜 전화하십니까 backend.php/index.php ??

.load()을 사용하는 대신 컨트롤러에서 html을 간단히 전달한 다음 success: function(data){}을 컨테이너에 추가 할 수 있습니다. 이렇게하면 ajax 호출이 error() 또는 success()인지 여부를 모니터링하고 그에 따라 작동 할 수 있습니다.

+0

안녕하세요 Mike, backend.php는 하나의 CI 설치에서 두 개의 응용 프로그램을 실행하기 위해 내가 CI에 한 수정입니다. 감사합니다. 구문 오류에 대한 코드를 더 자세히 찾아 보았습니다. –

+0

안녕 얘들 아, 나는 이미 위의 문제를 해결했습니다. CI_model에서 문제가 될 수 있습니다. 내가 문제를 발견하지만 현재 답변을 게시 명성이 부족하고 방법을 공유하고 싶어요. 하지만 너무 많은 사람들에게 감사드립니다. 명성 =) –

+0

당신은 올바른 방향으로 당신을 가리켜 준 것에 대한 우리의 대답 중 하나를 받아 들일 수 있습니까? 이 모델에서 이었기 때문에, 난 당신이 내게주는 말, – gorelative

6

data 옵션을 다음과 같이 변경하여 데이터가 올바르게 전달되는지 확인하십시오.

$.ajax({ 
      type: "POST", 
      url: "/backend.php/blog/removeCategories", 
      async:true, 
      cache:false, 
      data: {"id": id, "category": category } 
      }).done(function(msg){ 
       jQuery('#category_list').load('/backend.php/blog/refreshCategories/',p,function(str){}); 
      }); 

코딩 방법에 따라 각 키 값 쌍의 키가 변수 값으로 설정됩니다.

+1

예 동의서를 작성하는 데있어 흔한 실수를 범했습니다. 또한 피들러를 사용하여 서버가 무엇을 말하는지 확인하십시오. 대부분의 proboblay는 ID를 지정해야한다고 말합니다. 코드가 어쨌든 실행되면 .. returingon 오류 500 – ppumkin

+0

인 것처럼 보이기 때문에 실행하지 않아야합니다. 합법적 인 문제가된다. 그러나 문제는 내 변수와 제안 된 솔루션을 변경 함에도 불구하고 지속됩니다. –

+0

Firebug에서 헤더 정보를 게시하여 전달중인 데이터가 제대로 전달되는지 확인할 수 있습니까? – marteljn

2

Codeigniter에서 csrf_protection을 config로 활성화하면 오류 500이 반환됩니다!

이 문제를 해결하려면 csrf 값을 보내야합니다.

예 :

$.ajax({ 
      type: "POST", 
      url: "http://example.com", 
      data: { 
       '<?php echo $this->security->get_csrf_token_name(); ?>' : 
       '<?php echo $this->security->get_csrf_hash(); ?>' 
       } 
     }); 
관련 문제