Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨域检索json数据_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 跨域检索json数据

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调用以从运行在不同域(使用cxf的KARAF)中的restfullweb服务检索数据(json),而进行ajax调用的客户机位于不同域(apachetomcat)

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;
}
{
    "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作为数据类型时,请求类型会自动更改为选项,并且找不到结果。