jQuery getJSON parseerror预期';'

时间:2011-06-01 00:10:03

标签: jquery json parse-error

使用IE8,jQuery 1.6.1.min.js.

来自REST服务的JSON似乎是有效的(至少我在jsonlint.com上验证它)

{
"requestId":"1624517264",
"acknowledge":1,
"errorCode":0,
"totalResultCount":2,
"results":[
{"EmployeeCode":"007","EmployeeUno":7,"EmployeeName":"Bond, James","Location":"Unknown","Login":"JBOND"},
{"EmployeeCode":"008","EmployeeUno":8,"EmployeeName":"Bar, Foo","Location":"NYC","Login":"FBAR"}
]}

jQuery的:

  $.getJSON(urlToSvc + "&callback=?", function (data) {
                   // can't get to here 
                });

我得到一个javascript错误预期';'。我做错了什么?

2 个答案:

答案 0 :(得分:4)

如果这正是来自urlToSvc的响应,那么看起来你正在发出JSONP请求,但是urlToSvc正在返回普通的JSON。

如果您使用像Firebug这样的工具来检查$.getJSON()发出的请求,您会发现它正在用callback=?替换callback=jQuery152012865984649397433_1306892572812。这意味着jQuery期望将JSON作为参数返回给jQuery152012865984649397433_1306892572812()的函数调用。这就是它在幕后连接你的回调函数的方式。

在这种情况下,响应应该看起来像这样(尽管确切的函数名称将在callback querystring参数指定的每个请求上更改):

jQuery152012865984649397433_1306892572812('{"requestId":"1624517264","acknowledge":1,"errorCode":0,"totalResultCount":2,"results":[{"EmployeeCode":"007","EmployeeUno":7,"EmployeeName":"Bond, James","Location":"Unknown","Login":"JBOND"},{"EmployeeCode":"008","EmployeeUno":8,"EmployeeName":"Bar, Foo","Location":"NYC","Login":"FBAR"}]}')

答案 1 :(得分:1)

JSON看起来有效。考虑回溯不精确的可能性,实际上它是回调函数中的语法错误。还要确保此数据是实际接收的数据 - 如果URL稍微关闭,例如,您可能正在尝试解析错误页面。 Chrome或Firebug的网络标签非常适用于此。