Jaka jest różnica pomiędzy
contentType: "application/json; charset=utf-8",
dataType: "json",
vs.
contentType: "application/json",
dataType: "text",
contentType
to nagłówek HTTP wysłany do serwera, określający określony format. dataType
czy mówisz jQuery, jakiej odpowiedzi możesz się spodziewać. $.ajax()
Dokumentacja ma pełne opisy tych również.
W danym przypadku, pierwszy prosi dla odpowiedź będzie w UTF-8
drugi nie obchodzi. Również pierwsza traktuje odpowiedź jako obiekt JavaScript, a druga traktuje ją jako ciąg.
Więc pierwsze byłoby:
success: function(data) {
// get data, e.g. data.title;
}
Drugi:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: odpowiedź udzielona przez Nicka Cravera jest nieprawidłowa)
contentType określa format danych wysyłanych do serwera w ramach żądania (można je przesłać również w ramach odpowiedzi, o czym później).
dataType określa oczekiwany format danych, które mają być odbierane przez klienta (przeglądarkę).
Obie nie są wymienne.
contentType
to nagłówek wysyłany do serwera, określający format danych (tj. treść wiadomości) trafiających na serwer. Jest to używane z żądaniami POST i PUT. Zwykle, gdy wysyłasz żądanie POST, treść wiadomości składa się z przekazanych parametrów, takich jak:==============================
Prośba o próbkę:
==============================
Ostatni wiersz powyżej „name = sam & age = 35” to treść wiadomości, a contentType określa ją jako application / x-www-form-urlencoded, ponieważ przekazujemy parametry formularza w treści wiadomości. Nie ograniczamy się jednak tylko do wysyłania parametrów, możemy wysyłać json, xml, ... w ten sposób (wysyłanie różnych typów danych jest szczególnie przydatne w przypadku usług internetowych RESTful):
==============================
Prośba o próbkę:
==============================
Więc tym razem ContentType to: application / xml, bo to właśnie wysyłamy. Powyższe przykłady pokazały przykładowe żądanie, podobnie odpowiedź wysłana z serwera może mieć również nagłówek Content-Type określający, co serwer wysyła w następujący sposób:
==============================
przykładowa odpowiedź:
==============================
dataType
określa oczekiwany format odpowiedzi. Jest to związane z nagłówkiem Accept. JQuery spróbuje to wywnioskować na podstawie typu treści odpowiedzi.==============================
Prośba o próbkę:
==============================
Powyższe żądanie oczekuje XML z serwera.
Jeśli chodzi o twoje pytanie,
Tutaj wysyłasz dane json przy użyciu zestawu znaków UTF8 i oczekujesz zwrotnych danych json z serwera. Zgodnie z dokumentacją JQuery dla typu dataType,
Więc to, co otrzymujesz w programie obsługi sukcesu, to odpowiedni obiekt javascript (JQuery konwertuje obiekt json za Ciebie)
natomiast
Tutaj wysyłasz dane json, ponieważ nie wspomniałeś o kodowaniu, zgodnie z dokumentacją JQuery,
a ponieważ dataType jest określona jako tekst, w programie obsługi sukcesu otrzymujesz zwykły tekst, zgodnie z dokumentacją dla dataType,
źródło
zgodnie z dokumentami :
"json"
: Ocenia odpowiedź jako JSON i zwraca obiekt JavaScript. W jQuery 1.4 dane JSON są analizowane w ścisły sposób; każdy źle sformułowany kod JSON jest odrzucany i generowany jest błąd analizy. (Więcej informacji na temat prawidłowego formatowania JSON można znaleźć w witrynie json.org)."text"
: Zwykły ciąg tekstowy.źródło
Moduł ładujący jQuery Ajax nie działa dobrze, gdy wywołujesz jednocześnie dwa interfejsy API. Aby rozwiązać ten problem, musisz wywoływać interfejsy API jeden po drugim, używając
isAsync
właściwości w ustawieniu Ajax. Musisz również upewnić się, że nie powinno być żadnych błędów w ustawieniach. W przeciwnym razie ładowarka nie będzie działać. Np. Niezdefiniowany typ zawartości, typ danych dla wywołania POST / PUT / DELETE / GET.źródło