Javascript 跨域检索json数据
我需要进行ajax调用以从运行在不同域(使用cxf的KARAF)中的restfullweb服务检索数据(json),而进行ajax调用的客户机位于不同域(apachetomcat) Web服务以MediaType.APPLICATION_JSON的形式返回数据,但由于跨域调用,我收到的数据是jsonp对象的形式Javascript 跨域检索json数据,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我需要进行ajax调用以从运行在不同域(使用cxf的KARAF)中的restfullweb服务检索数据(json),而进行ajax调用的客户机位于不同域(apachetomcat) Web服务以MediaType.APPLICATION_JSON的形式返回数据,但由于跨域调用,我收到的数据是jsonp对象的形式 $.ajax({ url: "http://localhost:8181/cxf/view/ID_123", type: "GET", crossDomain : tru
$.ajax({
url: "http://localhost:8181/cxf/view/ID_123",
type: "GET",
crossDomain : true,
contentType: "applicaion/json",
dataType : "jsonp",
jsonpCallback : 'myJsonCallBack',
sucess : function(json) {
alert("Success Called");
},
error : function(xhr) {
alert("Error");
}
});
myJsonCallBack函数如下所示
function myJsonCallBack(data) {
alert("Callback Called");
}
@GET
@Path("/view/{userid}")
public ViewPreference getViewPreference(@PathParam("userid") String userId) {
ViewPreference viewPreference = new ViewPreference("GRID VIEW");
return viewPreference;
}
{
"viewPreference": {
"preference": "GRID VIEW"
}
}
web服务方法如下所示
function myJsonCallBack(data) {
alert("Callback Called");
}
@GET
@Path("/view/{userid}")
public ViewPreference getViewPreference(@PathParam("userid") String userId) {
ViewPreference viewPreference = new ViewPreference("GRID VIEW");
return viewPreference;
}
{
"viewPreference": {
"preference": "GRID VIEW"
}
}
返回json对象,如下所示
function myJsonCallBack(data) {
alert("Callback Called");
}
@GET
@Path("/view/{userid}")
public ViewPreference getViewPreference(@PathParam("userid") String userId) {
ViewPreference viewPreference = new ViewPreference("GRID VIEW");
return viewPreference;
}
{
"viewPreference": {
"preference": "GRID VIEW"
}
}
问题是,每当我调用ajax时,既不会运行成功回调,也不会运行myJsonCallBack only错误
在检查firebug时,它显示了一些语法错误,告诉SyntaxError:missing;在语句{“viewPreference”:{“preference”:“GRID VIEW”}之前。
如何解决此问题?以下是您应该做的: 您应该从服务器返回以下内容: 'myJsonCallBack({“视图首选项”:{“首选项”:“网格视图”}}) 而不是这样:{“视图首选项”:{“首选项”:“网格视图”} 这将在没有语法错误的情况下调用myJsonCallback函数和其他函数
希望这有帮助:)我猜错误是因为您在ajax中指定了数据类型:“jsonp”,并且web服务返回的是JSON响应而不是jsonp响应。Dave,我使用了这两种数据类型,但在使用JSON作为数据类型时,请求类型会自动更改为选项,并且找不到结果。