我需要做一個ajax調用,以從運行在不同域(KARAF使用cxf)的RESTfull Web服務和正在進行ajax調用的客戶端檢索數據(json) ,位於不同的域(Apache Tomcat)。檢索交叉域中的json數據
Web Service正在以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 funcation是如下..
function myJsonCallBack(data) {
alert("Callback Called");
}
web服務方法如下..
@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唯一的錯誤運行。
雖然檢查螢火蟲它顯示一些語法錯誤告訴SyntaxError:missing; before statement {「viewPreference」:{「preference」:「GRID VIEW」}}。
如何解決此問題..?
我猜的錯誤是因爲你指定的數據類型:在Ajax和Web服務「JSONP」正在返回JSON效應初探而不是JSONP性反應的 – Dave
喜戴夫,我用兩個具體的數據類型,但同時使用json作爲dataType請求類型GET自動更改爲OPTIONS並且未找到結果。 – EJUNIKA