JavaScript JSON语法错误:无法识别的表达式

时间:2015-07-10 20:50:36

标签: javascript c# jquery ajax json

我正在尝试使用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
    };
}

2 个答案:

答案 0 :(得分:1)

那应该是each的静态版本,传递数组(比在jQuery对象中包装数组更快,只是迭代它):

$.each(data, function () {
     alert('value: ' + this.value + ' label: ' + this.label);
});

注意:您当前的代码没有出现该错误,似乎工作正常:

http://jsfiddle.net/yk4wb7dv/

你是否包含了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);
});
相关问题