后台代码返回JSON对象给前端,前端把JSON转换为字符串就能输出,直接输出对象就是Undefined,试了网上很多方法发现都不对,最后发现返回JSON对象的时候,字段名称自动被小写了,我没有注意到,前端在调用的时候还是用大写的字段名调用,就是Undefined,换成小写了就没问题了。
我的后台代码,输出JSON对象,这些是修改过的,修改前sex和num我都是写的Sex和Num,首字母大写了,就出问题了
[HttpPost]
public JsonResult GetEchartsPie()
{
//声明两个动态数据,存储循环出来的数据
ArrayList xAxisData = new ArrayList();
ArrayList yAxisData = new ArrayList();
Random r = new Random();
//循环list将数据循环存储在动态数组中
for (int i = 0; i < 10; i++)
{
xAxisData.Add(r.Next(0,2)==0 ? "男" : "女");
yAxisData.Add(r.Next(0, 10));
}
var result = new { sex = xAxisData, num = yAxisData };
return Json(result);
}
前端代码(当时也是用的result.Num,字母大写了,就报错,改成小写就OK了)
$.ajax({
url: "/Home/GetEchartsPie",
type: "post",
async: false,
dataType: "json",
success: function (result) {
//for循环遍历所需的数据
for (var i = 0; i < result.num.length; i++) {
Info[i] = JSON.parse(result.num[i]);
}
for (var i = 0; i < result.sex.length; i++) {
Sex[i] = result.sex[i];//以JSON的方式接收字符串
}
InitPie(Sex, Info);
},
error: function (error) {
alert("Ajax获取服务器数据出错了!" + error);
}
});
问了群里大佬,说可以设置转换JSON的时候让他不自动变小写,但是我懒得找啦,就都给改成小写了,有兴趣的朋友可以去搜搜看。