0

我有一个控制器方法GetNearbyUsers,它将用户列表作为 JsonResult 返回。我正在尝试使用以下 ajax 函数调用该方法:

function getNearbyUsers(interest) {
    $.ajax(
    {
        type: "POST",
        url: "/Interest/GetNearbyUsers",
        data: { "interest": interest},
        success:
            function (result) {
                console.log(result);
                for (var item in result) {
                    console.log(item.username);
                }
            },
        error: function (req, status, error) {
                    window.alert("Error!");
               }
    });
}

目前我只是试图在控制台中显示用户名以确保它正常工作,我将从他们继续。控制器方法工作正常并返回正确的 JsonResult;实际上打印“结果”给出:

[Object, Object, Object, Object, Object]
0: Object
Id: Object
Interests: Array[3]
LastUpdated: "/Date(1367419763994)/"
Location: Array[2]
Password: "password"
UserName: "user1"
__proto__: Object
1: Object
2: Object
3: Object
4: Object

因此,Ajax 调用似乎正在工作并获得正确的数据。但是,当我尝试访问列表中的对象时,例如 item.username,它告诉我用户名未定义。当我只是做 console.log(item) 它只是打印索引。我也尝试在“结果”上使用 JSON.parse,但它给了我“意外的令牌 o”错误。有任何想法吗?

4

1 回答 1

4

试试这个: - 注意 - 外壳很重要。应该UserName不是username

for..in 循环获取索引而不是项目,所以你应该这样做result[idx]

您的默认返回值已经在 J​​SOn 中,因此您不需要JSON.parse对结果执行任何操作。

function getNearbyUsers(interest) {
    $.ajax(
    {
        type: "POST",
        url: "/Interest/GetNearbyUsers",
        data: { "interest": interest},
        success:
            function (result) {
                console.log(result);
                for (var idx in result) {
                    console.log(result[idx].UserName);
                }
            },
        error: function (req, status, error) {
                    window.alert("Error!");
               }
    });
}
于 2013-05-01T15:11:37.873 回答