Je construis juste ma première application MVC et je rencontre un problème en essayant d'effectuer une recherche en utilisant AJAX/JSON. Le problème semble être que le JSON renvoyé par mon contrôleur n'est pas un tableau signifiant que je ne peux pas utiliser la méthode $ .each de jQuery pour itérer sur mes éléments. J'essaie de rechercher un utilisateur par adresse e-mail.Méthode Json() du contrôleur ne retournant pas de tableau
J'ai une classe SearchController avec la méthode suivante:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SearchByEmail(string searchString)
{
var users = new List<jsonUser>();
foreach (I_User u in _rep.SearchByEmail(searchString))
{
users.Add(new jsonUser()
{
EmailAddress = u.EmailAddress,
FirstName = u.Firstname,
LastName = u.Surname,
UserName = u.Username
});
}
return Json(users);
}
qui tire correctement et renvoie quelque chose qui semble, à moi de toute façon, comme un tableau JSON:
[{"EmailAddress":"[email protected]","UserName":"[email protected]","FirstName":"Foo","LastName":"Bar"}]
Et puis dans ma page, j'ai le code suivant:
$("#search").click(function(evt) {
var emailsearch = jQuery.trim($("#email").val());
$.post("/Search/SearchByEmail", { searchString: emailsearch },
function(Users) {
$("#jsonlist").text(Users); //Added to check what JSON returns.
alert($.isArray(Users)); //Added to work out if jQuery thinks this is an array!
$.each(Users, function() {
//Do stuff on each user item
});
});
});
});
En ajoutant les lignes commentées ci-dessus, jev Nous avons établi que cette fonction obtenait un résultat raisonnable (le JSON posté ci-dessus) mais qu'elle ne pense pas que ce soit un tableau. En tant que tel, $ (this) dans la boucle $ .each n'est pas défini.
J'ai emprunté de gros morceaux à l'application NerdDinner, et je ne vois vraiment pas quelle est la différence. Toutes les suggestions grandement appréciées!
Cela a fait l'affaire - m'a donné un mal de tête en travaillant, depuis mon appel de debug $ ("# jsonlist"). Text (Users); commencé à échouer une fois Les utilisateurs étaient un objet plutôt qu'une chaîne! –