Firebug如何解析无效的JSONP响应?

How can Firebug parse an invalid JSONP response?

本文关键字:JSONP 响应 无效 何解析 Firebug      更新时间:2023-09-26

所以我只是第一次尝试Jersey Jax-rs web服务,我已经制作了可以想象的最简单的GET方法。

我还创建了一个AJAX函数来调用web服务。现在,如果我将dataType属性设置为json,我将得到预期的"跨域"误差,这很好。

然而,当我将dataType更改为jsonp时,我惊讶地看到Firebug能够解析字符串("来自webservice的回复"),这是由web服务发送的,即使它没有正确格式化为JSONP,并在其控制台面板中显示。

所以如果Firebug可以解析无效的JSONP(我认为它不应该能够),为什么AJAX似乎不能解析它?如果对AJAX调用接收到的数据进行字符串化处理,我所能看到的就是

{"readyState":4,"status":200,"statusText":"success"}

下面是我的代码,以获得更大的上下文。

Jersey Web Service

@GET
@Path("getJson")
@Produces("application/json")                     
public String getJson()
{
  return "Reply from Webservice";  
}
Javascript Ajax

function accessWebService()
{
  var query = "http://localhost:8080/test_webservice/webresources/test/getJson";
  $.ajax
  ({
      type: 'GET',
      url: query,
      dataType: 'jsonp',        
      async: true,
      timeout: 10000,
      jsonpCallback: call,
      complete: function(data) 
      { 
        console.log(JSON.stringify(data));
      }
  });
}
function call(data)
{
  console.log("jsonp");
}

Firebug Console Output

{"readyState":4,"status":200,"statusText":"success"}
SyntaxError: missing ; before statement
"Reply from Webservice"

Firebug有一些特殊的功能来解析(无效的)JSON。查看此文件:

https://github.com/firebug/firebug/blob/1569514de44c0b75f5fb336691ab445663f0afca/extension/content/firebug/lib/json.js

参见函数Json.parseJSONStringpseudoJsonToJson(json)