【发布时间】:2009-04-06 17:49:00
【问题描述】:
我正在构建我的第一个 MVC 应用程序,但在尝试使用 AJAX/JSON 执行搜索时遇到了问题。问题似乎是我的控制器返回的 JSON 不是数组,这意味着我不能使用 jQuery 的 $.each 方法来迭代我的项目。我正在尝试通过电子邮件地址搜索用户。
我有一个 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),但它认为这不是一个数组。因此,$.each 循环中的 $(this) 是未定义的。
我从 NerdDinner 应用程序中借用了其中的大部分内容,但真的看不出有什么区别。任何建议都非常感谢!
【问题讨论】:
标签: jquery asp.net-mvc json