我正在尝试使用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
};
}
答案 0 :(得分:1)
那应该是each
的静态版本,传递数组(比在jQuery对象中包装数组更快,只是迭代它):
$.each(data, function () {
alert('value: ' + this.value + ' label: ' + this.label);
});
注意:您当前的代码没有出现该错误,似乎工作正常:
你是否包含了JQuery等?
答案 1 :(得分:1)
看起来你正试图在data.locations
中放置一个JSON对象,但你的语法有误。 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);
});