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

时间:2014-07-03 10:31:50

标签: javascript ajax java-ee jsonp firebug

所以我第一次尝试Jersey Jax-rs网络服务,并且我已经想到了最简单的GET方法。

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

然而,当我将dataType更改为jsonp时,我惊讶地发现Firebug能够解析由Web服务发送的字符串(“来自webservice的回复”),甚至虽然JSONP格式不正确,但在 Console 面板中显示它。

因此,如果Firebug可以解析无效的JSONP(并且我认为它应该不能),那么为什么AJAX似乎也无法解析它呢?如果我对AJAX调用收到的数据进行字符串化,我只能看到,

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

这是我的更大背景的代码。

泽西岛网络服务

@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控制台输出

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

SyntaxError: missing ; before statement
"Reply from Webservice"

1 个答案:

答案 0 :(得分:0)

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

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

查看其中的Json.parseJSONStringpseudoJsonToJson(json)函数。