2012-10-21 3 views
3

나는 PHP 스크립트에 jquery에서 ajax 호출을 만들고있다. 하지만 PHP 스크립트는 AJAX의 성공/오류 처리기에서 반환해야하는 것은 무엇입니까? 그래서 여기 아약스는 다음과 같습니다
PHP Ajax 성공

$.ajax({ 
     data: $this.serialize(), 
     type: "POST", 
     url: "/Scripts/script.php", 
     success: function() { 
      alert("script was successful"); 
     }, 
     error: function() { 
      alert("script was unsuccessful"); 
     } 
    }); 

그래서 PHP 스크립트와 같은 반환 할 수있는 몇 가지가있다 : 하나는 아약스 성공/오류 통화를 발생

return 0, 1 
return true, false 
return "true", "false" 
echo "true", "false 

은?

+0

실패하게하려면 [header()] (http://php.net/manual/en/function.header.php)와 함께 오류 헤더를 보내십시오. –

답변

11

서버 측 스크립트가 HTTP 상태 코드 200을 보내는 한 항상 success 콜백을 시작합니다. 응답은 전혀 중요하지 않습니다. 상태 코드 만. 모든 예에서 HTTP 상태 코드 200 => 성공 콜백이 항상 실행된다는 것을 보여 줬습니다.

http_response_code 기능을 사용하면 상태 코드를 200과 다른 값으로 설정할 수 있습니다.

$.ajax({ 
    data: $this.serialize(), 
    type: "POST", 
    url: "/Scripts/script.php", 
    success: function(result) { 
     if (result == 'true') { 
      alert("script was successful"); 
     } else { 
      alert("script was unsuccessful"); 
     } 
    }, 
    error: function() { 
     alert("something very bad went wrong => there's a bug in the script"); 
    } 
}); 

: 당신이 당신의 PHP 스크립트는 몇 가지 정보를 반환하고 성공 함수 내에서 일부 서버 측 처리가 실패했는지의 여부를 알 수 있도록 스크립트에 의해 반환 된 값을 테스트 할 수 대안으로

이제 스크립트에서 true 또는 false을 표시 할 수 있습니다.

복잡한 개체를 보내려면 json_encode 함수를 사용하여 JSON으로 보내고 header 함수를 사용하여 HTTP 콘텐츠 형식 헤더를 application/json으로 설정할 수 있습니다.

+0

스크립트가 HTTP 상태 코드 200을 보내려면 어떻게해야합니까? –

+1

스크립트 => HTTP 상태 코드 200에 오류가 없습니다.'http_response_code' 함수를 사용하여 HTTP 상태 코드를 강제 실행할 수 있습니다. –

+0

그래서 위의 네 가지 옵션 중 하나를 사용하여 스크립트가 실패했다는 것을 아약스에 알릴 방법이 없습니까? –

0

Succes는 오류없이 완료된 요청을 XMLHTTPRequest에 실행하므로 결과로 어떤 결과가 반환되는지는 중요하지 않습니다. complete 콜백이 있습니다.이 스크립트는 AJAX 스크립트에서 실행되며 XMLHTTPRequest 오류가 발생해도 상관 없습니다.

+0

스크립트는 다른 사람의 암호를 업데이트하므로 사용자가 현재 암호로 입력 한 내용이 정확하지 않은 경우와 같이 잘못된 암호가있는 경우'암호가 변경되지 않았습니다. '라는 메시지가 표시됩니다. PHP 스크립트가 성공적으로 종료되지 않음을 아약스가 어떻게 알 수 있습니까? –

+0

false를 반환하고, thema는 둘러보기에서 if-else 문을가집니다. @CharlieYabben – 11684

+1

결과에 변수를 전달해야합니다 (PHP 스크립트는 아마) 데이터베이스가 성공적으로 업데이트되지 않는다고 말합니다. 이것은'success' 콜백에서 체크되어야합니다. postprocessor가 성공을 위해 'true'를 반환하면 성공 콜백 체크 성공으로 만 성공한다 :'function (r) {if (r == 'true') {...} ...}' – Reflective