2013-05-01 38 views
0

我有一個控制器方法GetNearbyUsers,它將用戶列表作爲JsonResult返回。我嘗試使用下面的AJAX功能調用的方法:使用Ajax從Controller方法傳遞對象列表

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)時,它只是打印索引。我也嘗試在'result'上使用JSON.parse,但它給了我'意外的令牌o'錯誤。有任何想法嗎?

回答

4

試試這個: - 注意 - 外殼很重要。它應該是UserNameusername

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!"); 
       } 
    }); 
} 
+1

這樣做!我沒有意識到for..in循環對foreach循環的工作方式不同。感謝您的幫助:) – Matt 2013-05-01 15:17:17

+0

沒問題很高興幫助! – PSL 2013-05-01 15:18:08

+0

由於5分鐘的限制,我只是在等待Stack Overflow讓我。再次感謝! – Matt 2013-05-01 15:24:17

相關問題