Quelle est la différence entre
contentType: "application/json; charset=utf-8",
dataType: "json",
contre.
contentType: "application/json",
dataType: "text",
contentType
est l'en- tête HTTP envoyé au serveur, spécifiant un format particulier. dataType
est-ce que vous dites à jQuery quel type de réponse attendre. La $.ajax()
documentation en contient également une description complète.
Le premier est dans votre cas particulier, demander la réponse soit dans UTF-8
la seconde ne se soucie pas. De plus, le premier traite la réponse comme un objet JavaScript, le second va la traiter comme une chaîne.
Donc le premier serait:
success: function(data) {
// get data, e.g. data.title;
}
La deuxième:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: la réponse donnée par Nick Craver est incorrecte)
contentType spécifie le format des données envoyées au serveur dans le cadre de la requête (il peut également être envoyé dans le cadre de la réponse, plus à ce sujet plus tard).
dataType spécifie le format attendu des données à recevoir par le client (navigateur).
Les deux ne sont pas interchangeables.
contentType
est l'en-tête envoyé au serveur, spécifiant le format des données (c'est-à-dire le contenu du corps du message) étant au serveur. Ceci est utilisé avec les requêtes POST et PUT. Habituellement, lorsque vous envoyez une requête POST, le corps du message comprend des paramètres passés tels que:===============================
Demande d'échantillon:
===============================
La dernière ligne au-dessus de "name = sam & age = 35" est le corps du message et contentType le spécifie comme application / x-www-form-urlencoded puisque nous transmettons les paramètres du formulaire dans le corps du message. Cependant, nous ne sommes pas limités à simplement envoyer les paramètres, nous pouvons envoyer json, xml, ... comme ceci (l'envoi de différents types de données est particulièrement utile avec les services Web RESTful):
===============================
Demande d'échantillon:
===============================
Donc, le ContentType cette fois est: application / xml, car c'est ce que nous envoyons. Les exemples ci-dessus ont montré un exemple de demande, de même la réponse envoyée par le serveur peut également avoir l'en-tête Content-Type spécifiant ce que le serveur envoie comme ceci:
===============================
exemple de réponse:
===============================
dataType
spécifie le format de réponse à attendre. Son lié à l'en-tête Accept. JQuery essaiera de l'inférer en fonction du Content-Type de la réponse.===============================
Demande d'échantillon:
===============================
La demande ci-dessus attend du XML du serveur.
Concernant votre question,
Ici, vous envoyez des données json à l'aide du jeu de caractères UTF8, et vous attendez des données json du serveur. Selon la documentation JQuery pour dataType,
Donc, ce que vous obtenez dans le gestionnaire de succès est un objet javascript approprié (JQuery convertit l'objet json pour vous)
tandis que
Ici, vous envoyez des données json, puisque vous n'avez pas mentionné l'encodage, selon la documentation JQuery,
et comme dataType est spécifié en tant que texte, ce que vous obtenez dans le gestionnaire de succès est du texte brut, comme indiqué dans la documentation pour dataType,
la source
selon docs :
"json"
: Évalue la réponse en tant que JSON et renvoie un objet JavaScript. Dans jQuery 1.4, les données JSON sont analysées de manière stricte; tout JSON mal formé est rejeté et une erreur d'analyse est générée. (Voir json.org pour plus d'informations sur le formatage JSON approprié.)"text"
: Une chaîne de texte brut.la source
Le chargeur jQuery Ajax ne fonctionne pas correctement lorsque vous appelez deux API simultanément. Pour résoudre ce problème, vous devez appeler les API une par une à l'aide de la
isAsync
propriété dans le paramètre Ajax. Vous devez également vous assurer qu'il ne devrait y avoir aucune erreur dans le réglage. Sinon, le chargeur ne fonctionnera pas. Par exemple, type de contenu non défini, type de données pour l'appel POST / PUT / DELETE / GET.la source