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]

デフォルトの戻り値はすでに JSOn にあるため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 に答える