Я просто строю свое первое MVC-приложение и сталкиваюсь с проблемой, пытаясь выполнить поиск с использованием AJAX / JSON. Кажется, проблема в том, что JSON, возвращаемый моим контроллером, не является массивом, что означает, что я не могу использовать метод $ .each в jQuery для итерации по моим элементам. Я пытаюсь найти пользователя по адресу электронной почты.
У меня есть класс SearchController с помощью следующего метода:
[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);
}
, который запускается правильно и возвращает что-то, что в любом случае выглядит мне как массив JSON:
[{"EmailAddress":"foo@bar.com","UserName":"foo@bar.com","FirstName":"Foo","LastName":"Bar"}]
А потом на моей странице я получил следующий код:
$("#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
});
});
});
});
Добавляя закомментированные строки выше, я установил, что эта функция дает ощутимый результат (JSON опубликован выше), но она не считает, что это массив. Таким образом, $ (this) в цикле $ .each не определено.
Я заимствовал большие куски этого из приложения NerdDinner, и действительно не вижу, в чем разница. Любые предложения с благодарностью!