Pourquoi ne pas jquery tourner mon tableau en une chaîne json avant de l'envoyer à asp.net méthode web?
Jusqu'à présent, je n'ai été en passant javascript cordes à mon web méthodes, qui sont analysées, généralement en Guid. mais maintenant, j'ai une méthode qui accepte un IList... sur le client, j'ai construit ce tableau d'objets, puis tente de se faire passer comme:
$.ajax({
type: 'POST',
url: 'personalization.aspx/SetPersonalization',
data: "{'backerEntries':" + backerEntries + "}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: postcardManager.SetPersonalizationComplete
});
Le post:
{'backerEntries':[object Object],[object Object],[object Object]}
La réponse d'erreur:
Invalid JSON primitive: object.
Pour une raison quelconque, jquery ne semble pas à la conversion d'un tableau en une chaîne json? Des idées pourquoi? J'ai essayé de mettre [] autour de la backerEntries, et {} ainsi que {[]} juste en désespoir de cause. Ai-je raté quelque chose d'évident ici?
OriginalL'auteur EvilSyn | 2008-10-31
Vous devez vous connecter pour publier un commentaire.
..est le même que
...ce qui est assez inutile. Utilisation Duncansuggestion si vous voulez juste passer un codées liste de valeurs avec le nom "backerEntries" dans votre requête. Si vous voulez JSON-encode les données, puis obtenir une librairie JSON et appel
JSON.stringify()
.A fonctionné sans accroc. Je suis surpris de jquery ne l'a pas construit dans!
jQuery ne fournit pas de services de sérialisation. Depuis que vous utilisez ASP.NET déjà, plutôt que d'ajouter une nouvelle bibliothèque, vous devez utiliser la sérialisation des routines que vous obtenez gratuitement avec le ASP.NET ajax (voir ma réponse ci-dessous).
OriginalL'auteur Shog9
Les données que vous transmettez vous essayez de passer comme une chaîne de caractères déjà. Si vous voulez jQuery pour transformer laisser la chose comme un objet, par exemple
En supposant bien sûr backerEntries est un tableau. jQuery doit transformer le présent et l'ajouter à la querystring que c'est son comportement par défaut. Votre code actuel est en s'appuyant sur défaut comportements JavaScript qui ne sont pas par défaut convertir un tableau en sa représentation sous forme de chaîne.
OriginalL'auteur Duncan
Depuis que vous utilisez ASP.NET, vous pouvez utiliser le haut-ASP.NET AJAX sérialisation de la bibliothèque:
puis de les transmettre directement à votre appel ajax jQuery:
OriginalL'auteur Herb Caudill
Ce n'est PAS valable JSON: { 'toto': 'bar' }
N'est pas, n'est-ce pas, jamais, ne le sera jamais. JSON processeurs sont souvent très indulgent, qui est bien sûr faux commodité.
Lire la spécification. Une chaîne de caractères est défini pour être entourées de guillemets, pas de guillemets simples, pas de visage de smiley de caractères, pas des morceaux de métal plié à angle droit, et non pas des briques. Il n'y a aucune mention de guillemets simples, période.
Maintenant, les noms des propriétés sont des chaînes JSON. Par définition, elles DOIVENT être entourées de guillemets doubles.
Valide: { "foo": "barre" }
valide" { "foo": 100 }
valide: { "foo": true }
valide: { "foo": [ "un", "deux" ], "bar": false }
voir http://www.json.org
voir http://www.jsonlint.com
OriginalL'auteur