使用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错误预期';'。我做错了什么?
答案 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的网络标签非常适用于此。