我尝试使用 jQuery 迭代此 JSON 表达式中的对象:
[
{
"value": 609,
"label": "Wyandotte, MI"
},
{
"value": 3141,
"label": "Wilmington, NC"
}
]
这样每个对象都包含两个属性:值和标签。
这是我到目前为止所拥有的:
$(data).each(function () {
alert('value: ' + this.value + ' label: ' + this.label);
});
但我不断收到错误: 未捕获错误:语法错误,无法识别的表达式
有人可以帮忙吗?
编辑:
示例中的数据变量是任意的。实际发生的事情是我得到了一个像这样的对象数组:
data =
[
locations: "[{"value":5626,"label":"Bensenville, IL"}]",
notes: "Sample note"
]
然后我调用data = JSON.parse(data);
然后我对 data.locations
执行迭代,这会产生错误。
编辑(再次):
https://jsfiddle.net/e2p7gdod/
我一直在努力重现我所看到的。
这就是我生成返回结果的方式:
public JsonResult Foo()
{
var data = new JObject();
data["locations"] = "[{'value': 609,'label': 'Wyandotte, MI'},{'value': 3141,'label': 'Wilmington, NC'}]";
data["supervisor"] = "John Doe";
data["notes"] = "Sample note";
return new JsonResult()
{
Data = JsonConvert.SerializeObject(data),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
最佳答案
您似乎正在尝试将 JSON 对象放入 data.locations
中,但语法错误。 JSON 中的字符串必须用双引号括起来,而不是单引号。
public JsonResult Foo()
{
var data = new JObject();
data["locations"] = "[{\"value\": 609,\"label\": \"Wyandotte, MI\"},{\"value\": 3141,\"label\": \"Wilmington, NC\"}]";
data["supervisor"] = "John Doe";
data["notes"] = "Sample note";
return new JsonResult()
{
Data = JsonConvert.SerializeObject(data),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
然后在Javascript中,当你想迭代它时,你需要调用JSON.parse(data.locations)
:
var locations = JSON.parse(data.locations);
$.each(locations, function() {
alert('value: ' + this.value + ' label: ' + this.label);
});
关于JavaScript JSON 语法错误 : Unrecognized Expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350053/