J'ai créé un service web C# qui récupère une table de données avec 2 colonnes, cette table de données est sérialisée en utilisant JavaScriptSerializer.Est-ce que ce JSON est correct et si oui comment parcourir chaque objet en JavaScript - Asp .Net 3.5
En utilisant Firebug, je vois le JSON suivant qui semble correct pour moi:
"{"d":"[{\"Text\":\"4 blah blah2\",\"Value\":\"16\"},{\"Text\":\"asdf\",\"Value\":\"15\"},{\"Text\":\"qwerty\",\"Value\":\"13\"}]"}"
Sur le côté client, je reçois l'objet comme prévu à l'aide de cet appel:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "../../Services/Filter.asmx/GetComboBoxContents",
data: '{ strFilter: "' + selText + '" }',
datatype: "json",
success: function(result) { onGetComboBoxOneContents(result); },
fail: function(result) { alert(result); }
});
Comme attendu, la fonction onGetComboBoxOneContents (msg) est appelée, j'ai essayé de nombreuses façons, mais je suis incapable de résoudre les différents éléments. Voici la dernière version:
function onGetComboBoxOneContents(msg) {
var evalResult = eval("(" + msg + ")");
var cbo = getComboFilterOneObject;
ClearComboBox(cbo);
for (var i = 0; i < evalResult.d.length; i++) {
AddToComboBox(cbo, evalResult.d[i].Value, evalResult.d[i].Text);
}
}
L'objectif de la fonction est d'analyser de la JSON chaque valeur et une paire de texte et l'envoyer à une fonction distincte. Comme j'utilise .Net 3.5, le d est attendu.
Toute aide est grandement appréciée.
EDIT: J'ai mis à jour le code côté client ci-dessous, mais msg.d [i] .Value et msg.d [i] .Text dans la boucle sont encore indéfinis.
function onGetComboBoxOneContents(msg) {
var cbo = getComboFilterOneObject;
ClearComboBox(cbo);
for (var i = 0; i < msg.d.length; i++) {
AddToComboBox(cbo, msg.d[i].Value, msg.d[i].Text);
}
}
EDIT: Je l'ai obtenu à travailler, mais il me faut encore utiliser eval, voici ma solution qui fonctionne pour moi:
function onGetComboBoxOneContents(msg) {
var evalResult = eval(msg.d);
var cbo = $("#" + getComboFilterOneObject);
ClearComboBox(cbo);
for (var i = 0; i < evalResult.length; i++) {
AddToComboBox(cbo, evalResult[i].Value, evalResult[i].Text);
}
cbo.initializeOptionList();
}
Merci, en utilisant le débogueur de FireBug, il me montre msg comme la chaîne complète, mais il dit msg.d est indéfini. J'ai modifié mon code pour qu'il corresponde au vôtre, à l'exception du changement d'evalResult dans la ligne for de msg. –
J'ai corrigé la casse dans dataType et il semble que je suis plus proche, mais le débogueur signale toujours msg.d [i] .Value comme non défini. –