2014-05-17 36 views
0

我需要做一個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」}}。

如何解決此問題..?

+0

我猜的錯誤是因爲你指定的數據類型:在Ajax和Web服務「JSONP」正在返回JSON效應初探而不是JSONP性反應的 – Dave

+0

喜戴夫,我用兩個具體的數據類型,但同時使用json作爲dataType請求類型GET自動更改爲OPTIONS並且未找到結果。 – EJUNIKA

回答

0

這裏是你應該做的:

你應該從服務器返回這個 'myJsonCallBack({ 「viewPreference」:{ 「偏愛」: 「網格視圖」}})'

,而不是這樣的:{ 「viewPreference」:{ 「偏愛」: 「網格視圖」}}

這將調用myJsonCallback功能和其他無語法錯誤

希望這有助於:)