2

我一直这样做,使用 jsonp:

$.ajax({
    url         : 'http://domain.local/api/3/authentication/get-token',
    type        : 'POST',
    dataType    : 'jsonp',
    data        : 'username=user&secret=pass',
    success     : function(data) {
        console.log(data);
    }
});

它适用于旧的 jQuery 版本(1.3、1.4),但似乎不适用于最新版本(从 1.5.x 开始,它会发出奇怪的 GET 或 OPTION 请求)

关于如何解决这个问题的任何想法?

谢谢!

4

1 回答 1

0

新版本的 jQuery 一直在为我工作。我认为问题在于您使用的是 POST 请求,而 JSONP 不允许这样做:

您不能使用 JSONP 发布……它根本无法以这种方式工作,它创建一个元素来获取数据……这必须是一个 GET 请求。除了发布到您自己的域作为代理发布到另一个域之外,您无能为力……但是用户将无法直接执行此操作并看到响应。

如何使用类型:jsonp ajax 调用中的“POST”

您的通话应如下所示:

$.ajax({
    url         : 'http://domain.local/api/3/authentication/get-token',
    type        : 'GET',
    dataType    : 'jsonp',
    data        : 'username=user&secret=pass',
    success     : function(data) {
        console.log(data);
    }
});

如果上述方法不起作用,请尝试查看使用 Firebug 发送的参数。jQuery 应该发送一个“回调”参数,其值类似于“jQuery1710013558088336139917_1344030860953”。

还要查看服务器的响应。服务器应该返回返回数据,如下所示:

jQuery1710013558088336139917_1344030860953({"data":"goes here"})
于 2012-08-03T21:43:42.627 回答