Réglage processData à false dans jQuery sauts de ma requête AJAX
J'ai googlé pour un certain temps maintenant, et ne peut que trouver ce processData: false
. Je ne peux pas trouver quelqu'un qui a connu ce même problème.
Je suis de passage JSON vers le serveur et ne veulent pas de jQuery pour convertir automatiquement les données à une chaîne de requête, donc je suis processData à false. Je peux voir la demande de tir si je sors processData, mais dès que je l'ai mis je ne vois pas de demandes (à l'aide de Firebug & Chrome dev tools).
$.ajax({
url: myUrl,
type: "POST",
data: {foo: "bar"},
processData: false,
contentType: 'application/json'
});
La demande j'ai d'abord était un peu plus complexe que cela, mais j'ai simplifié pour essayer de cerner le problème, mais ce simple morceau de code ne fonctionne pas non plus (encore une fois, il ne fonctionne pas si je commentaire processData). Aussi, je ne suis pas le voir de toute les erreurs JavaScript dans la console.
Modifier
Pour l'avenir des internautes: Comme lonesomeday souligné, jQuery va pas jeter des erreurs, si vous fournir un JS objet ou une mise en forme incorrecte chaîne JSON. Il sera tout simplement pas le feu de la demande.
OriginalL'auteur paz | 2011-06-06
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez transmettre les données en JSON. Vous êtes de passage d'un objet Javascript. JSON est un moyen de la sérialisation des objets Javascript à cordes de sorte qu'ils peuvent être passés sans problèmes de compatibilité.
Vous voulez passer au format JSON dans une chaîne de caractères:
A été un certain temps depuis ce post, mais je voudrais ajouter à @lonesomday si vous voulez éviter de mettre " à la main sur chaque propriété/valeur que vous pouvez faire JSON.stringify(<a jason object>) et c'est tout.
Mais encore, ce n'processData faire?
Par défaut, c'est-à
processData:true
, jQuery automatiquement convertit tout objet passé en "data" pour une chaîne de requête qui est ajouté à l'URL lors de la cuisson de la demande. Paramètre à false, l'en empêche et vous permet donc d'envoyer JSON ou d'autres données que vous ne voulez pas traitées.processData
ne fait rien ici. Lorsque vous passez une chaîne dedata
(comme dans cet exemple) de jQuery ne sera pas le traiter.OriginalL'auteur lonesomeday
En fait,
processData
par défaut suppose quedata
transmis est un objet et l'envoie commeapplication/x-www-form-urlencoded
.Résumant tout ce qui est dit ci-dessus par @lonesomeday et @vsm pour envoyer des premières JSON (ce qui est différent de la forme de données), vous devez:
OriginalL'auteur Paul T. Rawkeen