我总是这样做,用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请求)
关于如何解决这个问题的想法?
谢谢!
答案 0 :(得分:0)
使用新版本的jQuery一直在为我工作。我认为问题是你正在使用POST请求,JSONP不允许这样做:
你不能使用JSONP进行POST ...它只是不起作用,它创建一个元素来获取数据......这必须是一个GET请求。除了作为代理发布到您自己的域之外,您可以做的事情并不多,但是用户不能直接执行此操作并查看响应。
来自How to use type: "POST" in jsonp ajax call
您的电话应如下所示:
$.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应该发送一个“callback”参数,其值为“jQuery1710013558088336139917_1344030860953”。
另请查看服务器的响应。服务器应返回返回如下所示的数据:
jQuery1710013558088336139917_1344030860953({"data":"goes here"})