我正在尝试对返回序列化对象的控制器方法进行ajax调用。
ajax get调用很好地检索了对象(我可以记录结果,并且所有数据都在其中),但是当我尝试访问各个属性时,我会得到“未定义”。
这是controller方法中的行,它将序列化的数据返回给ajax方法。
public JsonResult PopulateMonitor()
{
return Json(GetGameBoards(), JsonRequestBehavior.AllowGet);
}
这是ajax调用
$.ajax({
type: "GET",
dataType: 'json',
url: "/Dashboard/PopulateMonitor/",
success: function (data) {
$.each(data, function () {
console.log(data);
console.log(data.HomeBeer);
});
},
error: function (data) {
alert("Error, could not load gameboards");
}
});
该行:
console.log(data);
返回:
{
"GameChannel": 1,
"HomeTeamName": "BEARS",
"AwayTeamName": "PACKERS",
"HomeTeamScore": "14",
"AwayTeamScore": "27",
"HomeDrinkMin": 1.3,
"HomeDrinkMax": 6,
"AwayDrinkMin": 0.8,
"AwayDrinkMax": 5.5,
"Multiplier": 1,
"HomeTeamImage": "/Images/NFLTeams/BEARS.png",
"AwayTeamImage": "/Images/NFLTeams/PACKERS.png",
"HomeBeer": "Coors Lite",
"AwayBeer": "Miller Lite",
"HomeBeerPrice": "284.50",
"AwayBeerPrice": "283.30",
"HomeBeerAdjustedPrice": "1.00",
"AwayBeerAdjustedPrice": "1.00",
"HomeBeerPreviousPrice": "283.50",
"AwayBeerPreviousPrice": "282.30",
"HomeTeamArrow": "/Images/Comparators/UP.png",
"AwayTeamArrow": "/Images/Comparators/UP.png"
}
但行
console.log(data.HomeBeer);
返回:
undefined
我该如何执行类似的操作;
console.log(data.HomeBeer)
返回“ Coors Lite”
答案 0 :(得分:0)
似乎您正在从服务器端返回JSON对象。但是,您试图像数组一样遍历它。客户端使用$ .each函数来循环返回的值。 我在https://jsfiddle.net/siddharthseth1980/od173wep/33/复制了这种情况 即使这样,我也没有遇到您遇到的错误。尽管如果我将数据转换为长度为1的数组,则在访问返回数据的对象属性时也会遇到未定义的错误。请看一下小提琴,在其中我不循环返回的数据并获得所需的结果。
$data = "This is some file data.\n";
file_put_contents( 'php://memory', $data );
echo file_get_contents( 'php://memory' );