2008-11-15 3 views
0

이상한 질문처럼 들리지만, 나는 이런 식으로 뭔가가 있다고 가정 :서버 측에서 ajax 쿼리 (jquery에서)를 취소하는 방법은 무엇입니까?

$.post("/myajax.php", 
     { "param1": value1, "param2": value2 }, 
     function(data, status) { 
      if(status == "success") { 
       $("#someid").html(data); 
      } 
     }, "html"); 

myajax.php 그것을 할 필요가 어떤 일을하는 동안, 그것이 #someid을 변경할 필요가 없다는 결정을. 방금 반환하면 someid 요소가 비어 있지만 혼자두고 싶습니다. 어떻게 PHP 쿼리가 그런 식으로 반환 할 수 status != "success"?

답변

4

반환 된 데이터를 확인하는 것이 더 간단하지 않습니까?

$.post("/myajax.php", { 
     "param1": value1, 
     "param2": value2 
    }, function(data, status) { 
     if(data != "") { 
      $("#someid").html(data); 
     } 
    }, 
    "html" 
); 
+0

예, 아니요. 둘 다 꽤 기본적인 생각입니다. 비 200 OK를 반환하는 것은 상태 코드를 변경하면 더 "올바른"것으로 보입니다. – Owen

+0

하지만 실제 오류와 어떻게 구분 되나요? 요청을 올바르게 완료하는 것이 중요하다고 생각합니다. –

+0

@Eran - 동의합니다. 데이터 매개 변수를 사용한다는 것은 HTTP 트랜잭션이 아닌 서버 측 코드의 로직을 필터링한다는 것을 의미합니다 (올바르지 않습니다). – alastairs

4

ajax 호출은 모두 200 OK을 성공으로 처리합니다. 따라서 PHP 스크립트에서 다른 것을 반환하여 아약스의 오류를 유발할 수 있습니다.

here은 더 적절한 것을 선택하고 싶을 때 사용할 수있는 몇 가지 다른 상태 코드입니다.

편집 : : 나는 그 접근 방식에 반드시 동의하지 않지만, 응답 본문보다는 상태 메시지 (http 상태)에서 계속 작동하도록 기울이고 있습니다.

내 생각은 포스트 트랜잭션에서 설명한 것과 같이 리소스를 업데이트하는 것입니다.

  1. 200 OK는 콘텐츠가 문제없이 게시 된 의미하며, 결과 응답은 일반적으로 새로운 콘텐츠를 표시하는 것입니다 : 하나는 합리적으로 당신이 한 두 가지 두가 ("성공"조건에서) 일어날 기대 가정 할 수있다. ajax 메소드는 응답 본문을 가져 와서 UI를 업데이트 할 수있게함으로써이 동작을 강제합니다.

  2. 업데이트를 수행 할 필요가없는 시나리오에서 200 OK는 정상적으로 처리되었으므로 (요청이 예상대로 처리되었으므로), 아마도 204 No Content이 더 좋은 것으로 요청이 충족되었음을 나타내므로, 그러나 전망의 변화는 필요하지 않다. 나는 이것이 응답 바디를 무시할 수 있고 (아무 것도 없기 때문에) 아약스 호출과 더 많은 인라인이라고 생각하는쪽으로 기대고있다. (204? UI가 "아무런 변화도 필요 없다"또는 비슷한)

관련 문제