【发布时间】:2014-07-03 19:32:56
【问题描述】:
所以我只是第一次尝试 Jersey Jax-rs Web 服务,并且我已经制作了可以想象的最简单的 GET 方法。
我还创建了一个 AJAX 函数来调用 Web 服务。现在,如果我将dataType 属性设置为json,我会得到预期的“跨域”错误,这很好。
但是,当我将 dataType 更改为 jsonp 时,我惊讶地发现 Firebug 能够解析由 Web 服务发送的字符串(“Reply from 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"
【问题讨论】:
标签: javascript ajax jakarta-ee jsonp firebug