所以我第一次尝试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"
答案 0 :(得分:0)
Firebug有一些特殊的功能来解析(无效的)JSON。请参阅此文件:
查看其中的Json.parseJSONString
和pseudoJsonToJson(json)
函数。