Bit d'une question vague, mais je ne sais pas comment je peux cela pour travailler. Firebug dit l'objet JSON (tableau?) De ma demande ajax ressemble:Comment puis-je convertir ce tableau Json dans un format lisible par JQuery?
{
"jsonResult":
"[
{\"OrderInList\":1},
{\"OrderInList\":2}
]"
}
Ceci est récupéré par suite d'une demande de paiement ajax .getJSON $:
$.getJSON("/Json/GetOrderSelectList?parentCategoryId=" + postData, testData, function (jsonResult) {
$('#orderInList option').remove();
var map = {
"TestKey1": "TestValue1",
"TestKey2": "TestValue2"
};
$.each(jsonResult, function (key, value) {
$("#orderInList").append($("<option value=" + key + ">" + value + "</option>")
);
});
Si je remplace .each $ (jsonResult) avec $ .each (map) la liste de sélection se remplit correctement. Sinon, ma liste de sélection indique simplement "indéfini".
Je sérialiser JSON dans cette action dans mon MVC Controller:
public JsonResult GetOrderSelectList(int parentCategoryId)
{
var result = Session
.QueryOver<Category>()
.Where(x => x.Parent.Id == parentCategoryId)
.OrderBy(x => x.OrderInList).Asc
.List();
var toSerialize =
result.Select(r => new {r.OrderInList});
var jsonResult = JsonConvert.SerializeObject(toSerialize);
return Json(new
{ jsonResult,
}, JsonRequestBehavior.AllowGet);
}
Je pense donc que le problème pourrait être le format de l'action Json répond avec? Toute aide appréciée!
Modifier pour répondre
Les deux réponses ci-dessous m'a aidé. Je ne pouvais pas sembler taper fortement la variable jsonResult alors merci @JBabey pour avoir signalé mon erreur en lisant la propriété json, et en suggérant function (key, value) dans l'instruction $ .each.
Merci @Darin Dimitrov pour avoir aidé à trier mon contrôleur!
Cela semble vraiment bien, mais maintenant je reçois une erreur de 500 sur une référence circulaire (que vous ne pouviez pas connaître auparavant). Lorsque j'ajoute un .Select (x => x.OrderInList) à la requête, j'obtiens une erreur différente concernant mon parentCategoryId.Où déclaration: "La valeur" 1 "n'est pas de type" CumbriaMD.Domain.Category "et ne peut pas être utilisée dans cette collection générique
Nom du paramètre: valeur" hrrrm! Je pense que c'est pourquoi j'ai utilisé l'expression linq après avoir créé ma requête en premier lieu. – Kiada
Où ajoutez-vous la clause '.Select'? Est-ce à la fin de la requête LINQ, juste après l'appel de la méthode '.List'? –
Merci, ça marche maintenant :) – Kiada