$ .ajax获取成功数据属性未定义。无法访问数据的单个属性

时间:2018-12-22 16:09:02

标签: json ajax undefined

我正在尝试对返回序列化对象的控制器方法进行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”

1 个答案:

答案 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' );