Maison >interface Web >js tutoriel >Pourquoi ma requête jQuery AJAX envoie-t-elle des données sous forme de texte brut au lieu de JSON ?

Pourquoi ma requête jQuery AJAX envoie-t-elle des données sous forme de texte brut au lieu de JSON ?

DDD
DDDoriginal
2024-10-29 22:46:02548parcourir

Why is my jQuery AJAX request sending data as plain text instead of JSON?

Envoi efficace de données JSON avec jQuery

Dans le développement Web, il est souvent crucial de transmettre efficacement les données entre le côté client et le serveur. jQuery, une bibliothèque JavaScript populaire, propose des méthodes pratiques pour gérer un tel échange de données. Une tâche courante consiste à envoyer des données au format JSON au serveur à l'aide de jQuery.

Cependant, les développeurs rencontrent parfois un problème où les données ne sont pas transmises au format JSON souhaité mais sous forme de texte brut. Pour comprendre pourquoi cela se produit, examinons un extrait de code :

var arr = {City:'Moscow', Age:25};
$.ajax(
   {
        url: "Ajax.ashx",
        type: "POST",
        data: arr,
        dataType: 'json',
        async: false,
        success: function(msg) {
            alert(msg);
        }
    }
);

Ce code tente d'envoyer les données de l'objet arr au serveur Ajax.ashx à l'aide de la méthode $.ajax. Cependant, le problème survient car le code ne spécifie pas le type de contenu de la requête ni ne construit correctement la requête JSON.

Pour remédier à cela, la méthode JSON.stringify doit être utilisée pour convertir l'objet JavaScript en une chaîne JSON native. :

var arr = { City: 'Moscow', Age: 25 };
$.ajax({
    url: 'Ajax.ashx',
    type: 'POST',
    data: JSON.stringify(arr),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    async: false,
    success: function(msg) {
        alert(msg);
    }
});

Points clés à noter :

  • contentType : Spécifie le type de contenu de la requête, indiquant au serveur qu'un La requête JSON est en cours d'envoi.
  • dataType : Indique le type de réponse attendu du serveur.
  • JSON.stringify : Convertit l'objet JavaScript en une chaîne JSON.

Considérations supplémentaires :

  • L'objet arr est en fait un objet JavaScript, pas un tableau. Les tableaux doivent être notés par [].
  • Soyez attentif à la réponse du serveur et vérifiez que son en-tête Content-Type reflète correctement une réponse JSON. Sinon, jQuery tentera d'analyser la réponse en tant que JSON quel que soit son format réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn