아무도 도와 줄 수 있습니까?
success
과 .done()
의 차이를 $.ajax
으로 이해할 수 없습니다.
가능한 경우 예제를 제공하십시오.
아무도 도와 줄 수 있습니까?
success
과 .done()
의 차이를 $.ajax
으로 이해할 수 없습니다.
가능한 경우 예제를 제공하십시오.
요약하면 ajax 함수에서 성공 콜백 함수를 분리하여 나중에 수정하지 않고 자신의 핸들러를 추가 할 수 있습니다. 원래 코드 (관찰자 패턴).
여기에서 더 자세한 정보를 찾아보세요 : https://stackoverflow.com/a/14754681/1049184그리고 그 아래 예제는 done => success, fail => error 및 always => complete의 동등성을 매핑합니다. – StuartLC
이 답변은 요점을 놓칩니다. '성공 :'은 매개 변수로 사용되며'.success()'는'jqXHR'의 메소드로 사용됩니다. 후자는 더 이상 사용되지 않지만 이전은 OP가 요구 한 것입니다. – Alnitak
성공/오류/완료가 더 이상 사용되지 않으며 AJAX 상태 변경을 기반으로합니다. done/fail/always는 jQuery Deferred 상태 변경을 기반으로합니다. http://api.jquery.com/category/deferred-object/를 참조하십시오. – mickeyreiss
success
은 AJAX 호출이 성공한 경우에만 실행됩니다. 즉, 궁극적으로 HTTP 200 상태를 반환합니다. 실패하면 error
이 발생하고 성공 여부와 관계없이 요청이 완료되면 complete
이 발생합니다. success
($.ajax
의해 반환)을 jqXHR
개체 jQuery를 1.8
는 fail
과 함께 always
complete
으로 done
, error
대체되었다.
그러나 이전 구문으로 AJAX 요청을 초기화 할 수 있어야합니다. 그래서 이런 비슷한 일을 :
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax("...")
.done(function() { alert("success"); });
이 변경 jQuery를 1.5의 deferred object과의 호환성을위한 것입니다. 이연 (지금 Promise
을, 크롬과 FX 전체 기본 브라우저 지원이있는) 당신이 체인에 허용 비동기 동작 : 기능의
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
이 체인은 success
으로 얻을 콜백의 중첩 된 피라미드보다 유지 보수가 용이하다.
그러나, 대신 then
를 사용하는 done
지금 Promise
구문에 찬성되지 않습니다 점에 유의하시기 바랍니다 :
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
이 채택 가치가 async
및 await
는 약속 개선 구문 (및 오류 처리)를 확장하기 때문에 :
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
success
요청이 성공하고 $.ajax
전화의 일부입니다 때 호출되는 콜백입니다. done
은 실제로 $.ajax()
에 의해 반환 된 jqXHR
개체의 일부이며, jQuery 1.8에서 success
을 대체합니다.
.success()
귀하의 웹 서버가 200 OK HTTP 헤더로 응답하는 경우 - 기본적으로 모든 것이 정상적인 경우에만 호출됩니다.
지연이 해결되면 done()에 첨부 된 콜백이 실행됩니다. fail()에 첨부 된 콜백은 지연이 거부되면 시작됩니다.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
주목할 가치가있다. 조작 된 JSON이 200/OK 상태 코드와 함께 반송되면 .success()가 호출되지 않습니다. 특히, 웹 서버 백엔드 코드에서 NaN 값을 생성하고 JavaScript NaN (즉, 'NaN'이 아닌 기호)으로 직렬화하는 문제에 봉착했습니다. 실제로 유효하지 않은 JSON입니다. JSON 실패하고 .fail()이 실행되지만 응답 상태는 200입니다. 그러나 성공은 OK 상태 코드로만 호출됩니다. 단지 그것이 OK이기 때문에 그것이 성공이라고 말하는 것은 아닙니다.) – Kasapo
$ .ajax()의 done() 메소드는 어디서 읽었습니까? AFAIK done 메서드는 $ .Deferred 개체와 관련이 있습니다. 아마 .complete()에 대해 이야기하고 있습니까? http://api.jquery.com/jQuery에서 – fcalderan
아약스/페이지 –
괜찮아요, 그것의 jQuery 1.8 :) 이후 $ .ajax는 jQuery 1.5에서 약속을 반환합니다 (지연의 인터페이스를 사용하여 일관성의 문제에 대한 간단한 대체) : done() success() 및 complete()에 대한 always() – fcalderan