模型
public class AlldataPoints
{
public string name {get;set;}
public string phone {get;set;}
public string phase {get;set;}
}
控制器
public ActionResult GetResults1()
{
List<AlldataPoints> lst = (List<AlldataPoints>)Session["list"];
return Json(new { data = lst }, JsonRequestBehavior.AllowGet);
}
脚本
function Pie() {
$.get("GetResults1", function (abc) {
var bac = abc;
for (i = 0; i < bac.length; i++) {
var hello = bac[0].phase;
}
});
}
由于我的列表有3个数组对象,我想访问每个对象数组的阶段值并将其放入变量hello但是在运行时,hello未定义。
答案 0 :(得分:2)
正如briosheje在评论中提到的那样,问题可能出在数据类型中。您的控制器返回一个JSON字符串,并直接在您的控制器中使用。您需要确保Javascript获取的数据是一些JSON。
您可以按照建议使用JSON.parse(yourstring)
函数,这将确保您实际迭代JSON对象。这里发生的是以下过程:
http
请求中获取字符串:$.get("GetResults1", function (abc)
var bac = abc
for (i = 0; i < bac.length; i++)
0
变量(字符串)的索引bac
处的值。由于JavaScript是一种非类型语言,因此它遵循并将您的变量视为一个字符数组。所以,它会检查你的第一个角色。phase
字段,该字段不存在(undefined
)并将其存储到hello
:var hello = bac[0].phase (= undefined
)。编辑您可以查看this SO question,它可以很好地解决您的问题。