2

使用 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 错误,预期为 ';'。我究竟做错了什么?

4

2 回答 2

4

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

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

在这种情况下,响应应该看起来像这样(尽管确切的函数名称会在每个请求上发生变化,由callbackquerystring 参数指定):

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"}]}')
于 2011-06-01T01:49:46.850 回答
1

JSON 看起来有效。考虑回溯不精确的可能性,实际上它是回调函数中的语法错误。还要确保这些数据是实际接收到的数据——例如,如果 URL 稍有偏差,您可能正在尝试解析错误页面。Chrome 或 Firebug 的 Network 选项卡非常适合这一点。

于 2011-06-01T01:18:40.953 回答