Jquery REST AJAX跨域不执行回调

Jquery REST AJAX跨域不执行回调,jquery,ajax,rest,callback,cross-domain,Jquery,Ajax,Rest,Callback,Cross Domain,我在使用jQueryAjax函数执行跨域REST调用时遇到了很多麻烦 以下是代码: $.ajax({ url:restUrl, 键入:“GET”, 跨域:是的, 数据类型:“jsonp”, jsonp:false, jsonpCallback:'jsonpCallbackTest', 错误:函数(xhr、状态、错误){ console.log('notok'+xhr); console.log('不正常'+状态); console.log('不正常'+错误); }, 成功:函数(jsonp){

我在使用jQueryAjax函数执行跨域REST调用时遇到了很多麻烦

以下是代码:

$.ajax({
url:restUrl,
键入:“GET”,
跨域:是的,
数据类型:“jsonp”,
jsonp:false,
jsonpCallback:'jsonpCallbackTest',
错误:函数(xhr、状态、错误){
console.log('notok'+xhr);
console.log('不正常'+状态);
console.log('不正常'+错误);
},
成功:函数(jsonp){
警惕(“成功”);
}
});

这是我在Firebug控制台中得到的:

不正常[object]Init.js:872
不正常parsererror Init.js:873
不正常错误:未调用jsonpCallbackTest


我做错了什么

问候Matej

我做错了什么

从您在问题中提供的代码信息很难说。可能有很多原因。例如,您尝试调用的远程REST Web服务返回JSON响应,而不是JSONP

另外,您似乎已经定义了
jsonpCallbackTest
函数,但是您使用的是一个不兼容的匿名成功处理程序。试着这样做:

$.ajax({
    url: restUrl,
    type: 'GET',
    jsonpCallback: 'jsonpCallbackTest',
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});
然后定义jsonpCallbackTest函数:

function jsonpCallbackTest(jsonp) {
    alert("success");
}
您还必须检查远程web服务的文档,了解如何指定JSONP回调。是否可以将其作为查询字符串参数传递

通常最好让jQuery向web服务传递一个随机回调函数名:

$.ajax({
    url: restUrl,
    type: 'GET',
    dataType: 'jsonp',
    success: function(json) {
        alert("success");
    },
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});
我做错了什么

从您在问题中提供的代码信息很难说。可能有很多原因。例如,您尝试调用的远程REST Web服务返回JSON响应,而不是JSONP

另外,您似乎已经定义了
jsonpCallbackTest
函数,但是您使用的是一个不兼容的匿名成功处理程序。试着这样做:

$.ajax({
    url: restUrl,
    type: 'GET',
    jsonpCallback: 'jsonpCallbackTest',
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});
然后定义jsonpCallbackTest函数:

function jsonpCallbackTest(jsonp) {
    alert("success");
}
您还必须检查远程web服务的文档,了解如何指定JSONP回调。是否可以将其作为查询字符串参数传递

通常最好让jQuery向web服务传递一个随机回调函数名:

$.ajax({
    url: restUrl,
    type: 'GET',
    dataType: 'jsonp',
    success: function(json) {
        alert("success");
    },
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});

这个函数在哪里?带ajax调用的外部函数在哪里?带ajax调用的外部函数谢谢你的回答,但如果我尝试你的代码,我会得到:不正常[object]not OK parsererror not OK Error:JQuery172902001413051039_1341388798594未调用我将参数从jsonpCallback:'jsonpCallbackTest'更改为jsonpCallback:jsonpCallbackTest,现在执行该函数,但我无法从对该函数的ajax调用中获取参数。知道怎么做吗?错过了一个逗号“,”来表示成功function@Sobis,参数是一个字符串。您不应该将其更改为
jsonpCallback:jsonpCallbackTest
,这是错误的。你试过我上次的代码示例了吗?您是否检查了尝试调用的RESTfulWeb服务的文档,您需要为回调传递的参数名是什么?您正在尝试调用哪个url?它可以公开访问吗?如果您提供更多详细信息,我可能会帮助您。是的,我尝试了您的代码,但不起作用。如果我尝试您的第一个ajax调用,我会得到“XMLHttpRequest无法加载。访问控制不允许源代码。允许源代码。”如果我尝试您的第二个代码,我会得到“错误:jQuery17206285656029358506_1341389497129未调用”当您直接导航到
http://192.168.100.106:2080/ResEvo.Mind.Rest/rest/admin/workspace/postgres
浏览器中的地址您看到了什么?JSON或JSONP响应?谢谢你的回答,但如果我尝试你的代码,我会得到:not OK[object object]not OK parsererror not OK Error:JQuery172902001413051039_1341388798;未调用我将参数从JSONPCCallback:'jsonpCallbackTest'更改为jsonpCallback:jsonpCallbackTest,现在执行此函数,但我无法从对该函数的ajax调用中获取参数。知道怎么做吗?错过了一个逗号“,”来表示成功function@Sobis,参数是一个字符串。您不应该将其更改为
jsonpCallback:jsonpCallbackTest
,这是错误的。你试过我上次的代码示例了吗?您是否检查了尝试调用的RESTfulWeb服务的文档,您需要为回调传递的参数名是什么?您正在尝试调用哪个url?它可以公开访问吗?如果您提供更多详细信息,我可能会帮助您。是的,我尝试了您的代码,但不起作用。如果我尝试您的第一个ajax调用,我会得到“XMLHttpRequest无法加载。访问控制不允许源代码。允许源代码。”如果我尝试您的第二个代码,我会得到“错误:jQuery17206285656029358506_1341389497129未调用”当您直接导航到
http://192.168.100.106:2080/ResEvo.Mind.Rest/rest/admin/workspace/postgres
浏览器中的地址您看到了什么?JSON还是JSONP响应?