Zakodowałem tak:
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID },
success: function (data) {
$('#CityID').html(data);
},
error: function (ajaxContext) {
alert(ajaxContext.responseText)
}
});
Ale kiedy patrzę na .ajax()
dokumentację jQuery na końcu, wydaje mi się, że powinienem kodować w ten sposób poniżej lub przynajmniej sugeruje dodanie a .done()
i a .fail()
:
var request = $.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
});
request.done(function (data) {
xxx;
});
request.fail(function (jqXHR, textStatus) {
xxx;
});
Aktualizacja
Jeśli koduję w ten sposób, czy jest to to samo, czy jest jakaś korzyść z podzielenia go na trzy części?
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
}).done(function (data) {
xxx;
}).fail(function (jqXHR, textStatus) {
xxx;
});
.error
,.success
), który jest zastąpiona bardziej uniwersalnego Opóźnionej wzoru, ale parametry doajax
metody nie są już używane i są obie ważne i akceptowalne - nawet w jQuery 1.9 / 2.0! We wszystkich obecnych formachajax
nadal zwraca Odroczoną; prawdopodobnie z już dołączonymi odroczonymi wywołaniami zwrotnymi.jqXHR.success = jqXHR.done;
.success
,fail
,always
.Chcę dodać coś do posta @Michael Laffargue:
jqXHR.done()
jest szybszy!jqXHR.success()
mają trochę czasu ładowania w wywołaniu zwrotnym i czasami mogą przesadzić ze skryptem. Wcześniej uważam to za trudne.AKTUALIZACJA:
Używając
jqXHR.done()
,jqXHR.fail()
ijqXHR.always()
możesz lepiej manipulować żądaniem Ajax. Ogólnie możesz zdefiniować ajax w jakiejś zmiennej lub obiekcie i użyć tej zmiennej lub obiektu w dowolnej części kodu i szybciej uzyskać dane. Dobry przykład:źródło
W prostych słowach
jeśli otrzyma info.text, to ostrzeże i każdą dodaną funkcję lub jeśli w ogóle nie będzie w stanie pobrać info.text z serwera, to funkcja ostrzeżenia lub błędu.
źródło
Kiedy zamierzamy przeprowadzić migrację JQuery z 1.x do 2x lub 3.x w naszej starej istniejącej aplikacji, użyjemy .done, .fail zamiast powodzenia, błędu, ponieważ JQuery up gradation będzie przestarzałe. Przykładowo, gdy wywołujemy metody sieciowe serwera, serwer zwraca obietnice do metod wywołujących (metody Ajax), a te obietnice zawierają metody .done, .fail..etc. Poniżej znajduje się przykład (dotyczy żądania POST w taki sam sposób, w jaki możemy konstruować dla typu żądania, takiego jak GET ...)
źródło