在跨域中检索json数据

时间:2014-05-17 10:08:35

标签: javascript jquery ajax json

我需要进行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":{"偏好":"网格视图"}}。

如何解决此问题..?

1 个答案:

答案 0 :(得分:0)

这是你应该做的:

你应该从服务器返回:

' myJsonCallBack({" viewPreference":{" preference":" GRID VIEW"}})'

而非此: {" viewPreference":{"偏好":"网格视图"}}

这会调用myJsonCallback函数而其他函数没有语法错误

希望这有助于:)