asp.net MVC3返回多个JSON名单(asp.net mvc3 return multipl

2019-09-17 17:47发布

林asp.net MVC3 C#代码返回JSON名单如下:

return Json(new { name = UserNames, imageUrl = ImageUrls });

UserNamesImageUrls均为List<string>类型

这是我的javascript

function StartSearch(text) {
    $.ajax({
        url: '/Shared/Search',
        type: 'POST',
        data: { SearchText: text },
        dataType: 'json',
        success: function (result) {
            $.each(result, function (i, item) {
                alert(result[i].name);
            });
        }
    });
}

我怎样才能得到名称和ImageUrls

谢谢

Answer 1:

这提醒值Name从每个列表中的每个记录。

$.each(result, function (i, item) {
    for (var x = 0; x < result.FirstList.length; x++) {
        alert(result.FirstList[x].Name);
        alert(result.SecondList[x].Name);
    }
});

如果正确地形成这种假设你的JSON响应。 像这样:

return Json(new { FirstList = results, SecondList = otherResults }, JsonRequestBehavior.AllowGet);

但作为一个侧面说明,我看到你需要解决的其他问题与您的代码

  1. 你居然不执行POST ,您是根据输入的搜索。 更改POSTGET在你的Ajax调用
  2. 改变你的行动回流管道,允许GET,并确保您在返回JsonResult
  3. 为C#方法参数命名约定要求帕斯卡 - 套管。 使用第一个字符是小写字母

     public JsonResult Search(string searchText) { .... return Json(new { name = UserNames, imageUrl = ImageUrls }, JsonRequestBehavior.AllowGet); } 


Answer 2:

访问名称为这样的结果的属性result.name[i]

从本质上讲,结果将包含名称和IMAGEURL这两者都是阵列,就像你在匿名类型定义,因此您的代码应修改这样的名称数组中显示每个名称的警告

function StartSearch(text) {
    $.ajax({
        url: '/Shared/Search',
        type: 'POST',
        data: { SearchText: text },
        dataType: 'json',
        success: function (result) {
            $.each(result.name, function (i, item) {
                alert(item);
           });
        }
    });
}

$each迭代的名称数组中的项目,将项目传递到您回电,即项目的第二个参数。

所以

$.each(result.name, function (i, item) {
    alert(item);
});

会弹出每个名字。

笔记:

你可能想改变你的匿名类型的属性,以反映他们的集合:

return Json(new { UserNames = UserNames, ImageUrls = ImageUrls });

这样,当您在成功的功能遍历他们来说,这会更有意义。

作为AlfalfaStrange指出,我没有证明你怎么可能同时访问阵列。 这让我觉得,什么是用户名和图像的URL之间的关系?

这是一个用户图像的列表? 也许你应该考虑的是创造这一个特定的模式。 例如,UserDisplayModel:

public class UserDisplayModel
{
    public string UserName {get;set;}
    public string ImageUrl {get;set;}
}

在你的控制器返回UserDisplayModels的列表。 如果是这样的话,你就必须重新思考他们为什么摆在首位两个单独的列表。 也许的ImageUrl应该对用户表中的字段。

所以,现在,当你返回一个列表,如

List<UserDisplayModel> users = //get users from db
return Json(new { Users = Users});

你可以在JS代码一气呵成迭代它们:

       $.each(result.Users, function (i, item) {
            alert(item.Name);
            alert(item.ImageUrl);
        });


文章来源: asp.net mvc3 return multiple json list