2016-07-26 4 views
-1

테이블에서 행을 삭제하기 위해 아약스 호출을 수행하는 작은 사이트에서 작업하고 있습니다. 내가 뭘하고 싶은 PHP는 내 아약스 요청에 .success 또는 .fail 함수를 트리거하는 상태 코드를 반환하는 것입니다. 다른 질문을 찾고 난이 솔루션을 함께했다하지만 작동하지 않습니다 :아약스가 오류 상태 코드를 반환합니다.

AJAX 호출 :

function delete_mov(id){ 
    $.ajax("delete_mov.php?id="+id 
    ) 
    .success(function(){ 
     bootbox.alert("Movimento "+id+" correttamente cancellato"); 
    }) 
    .fail(function(){ 
     bootbox.alert("Problemi a cancellare il movimento "+id); 
    }); 
    } 

및 PHP :

try{ 
    $s = $dbh -> prepare("DELETE FROM movimenti_banca WHERE di=$id"); 
    $s -> execute(); 
} 
catch (PDOException $e){ 
    http_response_code(500); 
    exit; 
    //$message = $error_message.' '.$e->getMessage(); 
} 
http_response_code(200); 

내가 얻을 수없는 것은 .fail를 실행하는 것입니다 쿼리가 실행되지 않거나 오류를 반환 할 때 나는이 질문에 실패했다는 것을 확신하기 위해 내부에 오류 (di 대신 id를 넣었 기 때문에)가 실패했다. 호출 할 PHP 파일을 제거하면 .fail이 트리거됩니다.

편집 : 내 코드를 수정하여 http_response_code으로 테스트했지만 쿼리가 실패 할 때 여전히 500 상태를 트리거하지 않습니다.

EDIT2 : 디버깅 내가 쿼리에 오류가있는 경우에도 (di=$idid=$id해야한다) 캐치 부분은 입력하지 그래서 상태 (500)는 PHP 코드 사용에

답변

0

jQuery는 PHP 스크립트가 무엇을하고 있는지 알지 못하기 때문에 반환 된 결과에서 "상태"변수를 찾지 못합니다. 모든 jQuery는 실제 HTTP 요청이 "작동"되었는지 여부를 알고 있습니다. 그것은 200 결과를 다시 들어갔을 경우, 아무리 결과에 무엇이 성공없다는 것을.

success 처리기에서 HTTP 요청이 성공했지만 데이터에 "오류"가 표시되거나 PHP 스크립트에서 http_response_code()을 사용하여 HTTP 상태를 200에서 400으로 변경하거나 500은 오류를 나타냅니다.

+0

정확히 내가 뭘 PHP에서 얻으려고 노력하고 있습니다. 500 상태를 반환합니다. 그래서 저는 http_response_code를 사용해야합니다. 감사합니다 :) –

+0

내 코드에 솔루션을 적용하려고했지만 (편집 된 코드 참조) 항상 200을 반환합니다. 무엇이 누락 되었습니까? –

1

을 설정하지 않습니다 것을 깨달았 http_response_code은 당신이 꿈꾸는대로 HTTP 상태 코드를 설정하는 기능을합니다.

관련 문제