누구든지 나를 도울 수 있습니까? 과 의
차이점을 이해할 수 없습니다 .success
.done()
$.ajax
가능하다면 예를 들어주세요.
답변
간단히 말해, 성공 콜백 함수를 ajax 함수에서 분리하여 나중에 원래 코드 (관찰자 패턴)를 수정하지 않고도 고유 한 핸들러를 추가 할 수 있습니다.
여기에서 자세한 정보를 확인하십시오 : https://stackoverflow.com/a/14754681/1049184
답변
success
AJAX 호출이 성공한 경우에만 발생합니다. 즉, 궁극적으로 HTTP 200 상태를 반환합니다. 성공 여부에 관계없이 error
실패하고 complete
요청이 완료되면 발생합니다 .
온 jQuery를 1.8에서 jqXHR
객체 (에 의해 반환 $.ajax
) success
로 대체 done
, error
로 fail
와 complete
함께 always
.
그러나 이전 구문으로 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 (현재 Promise
, Chrome 및 FX에서 완전한 기본 브라우저 지원을 제공함)를 사용하면 비동기 작업을 연결할 수 있습니다.
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
이 함수 체인은에서 얻는 중첩 된 콜백 피라미드보다 유지 관리가 더 쉽습니다 success
.
그러나 done
이제는 대신 Promise
사용 하는 구문을 위해 더 이상 사용되지 않습니다 then
.
$.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()
웹 서버가 200 OK HTTP 헤더로 응답하는 경우에만 호출됩니다-기본적으로 모든 것이 정상일 때.
done ()에 첨부 된 콜백은 지연이 해결 될 때 시작됩니다. fail ()에 연결된 콜백은 지연이 거부 될 때 시작됩니다.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
답변
success
요청이 성공할 때 호출되고 $.ajax
호출의 일부인 콜백입니다 . done
실제로에서 jqXHR
반환 된 객체의 일부이며 jQuery 1.8에서 $.ajax()
대체 success
됩니다.