我需要进行ajax调用以从RESTfull Web Service检索数据(json),该服务在不同的域中运行(使用cxf的KARAF),并且正在进行ajax调用的客户端位于不同的域上( Apache Tomcat)。
Web服务以MediaType.APPLICATION_JSON的形式返回数据,但由于跨域调用,我接收到jsonp对象形式的数据。
$.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;
}
返回json对象如下..
{
"viewPreference": {
"preference": "GRID VIEW"
}
}
问题是,当我进行ajax调用时,既不运行成功回调也不运行myJsonCallBack错误。
在检查firebug时显示一些语法错误,告诉 SyntaxError:missing;在陈述之前{" viewPreference":{"偏好":"网格视图"}}。
如何解决此问题..?
答案 0 :(得分:0)
这是你应该做的:
你应该从服务器返回:
' myJsonCallBack({" viewPreference":{" preference":" GRID VIEW"}})' 强>
而非此: {" viewPreference":{"偏好":"网格视图"}}
这会调用myJsonCallback函数而其他函数没有语法错误
希望这有助于:)