我有一个控制器方法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)时,它只打印索引。我也尝试在'result'上使用JSON.parse,但它给了我'意外的令牌o'错误。有什么想法吗?
答案 0 :(得分: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!");
}
});
}