gpt4 book ai didi

jquery - Controller 的 Json() 方法不返回数组

转载 作者:行者123 更新时间:2023-12-01 03:06:23 25 4
gpt4 key购买 nike

我刚刚构建我的第一个 MVC 应用程序,并在尝试使用 AJAX/JSON 执行搜索时遇到问题。问题似乎是我的 Controller 返回的 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 应用程序中借用了大部分内容,但实际上看不出有什么区别。任何建议都非常感谢!

最佳答案

如果您返回 JSON,您是否尝试将相关数据类型参数添加到 $.post 调用的参数中?

$.post("/Search/SearchByEmail", 
{ searchString: emailsearch }, callback, "json");

帖子通常默认为 Html 或文本,因此它不会执行“反序列化”帖子正文所需的评估。

关于jquery - Controller 的 Json() 方法不返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/722499/

25 4 0
文章推荐: javascript - 安装后尝试设置时出现 react 导航错误 - 元素类型无效
文章推荐: jquery - 使用 jQuery 引用嵌套在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com