我正在尝试发出一个跨域post请求,我让它在纯JavaScript
中工作,如下所示:
var request = new XMLHttpRequest();
var params = "action=something";
request.open('POST', url, true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.send(params);
但是我想使用jQuery
,但是我不能让它工作。这就是我正在尝试的:
$.ajax(url, {
type:"POST",
dataType:"json",
data:{action:"something"},
success:function(data, textStatus, jqXHR) {alert("success");},
error: function(jqXHR, textStatus, errorThrown) {alert("failure");}
});
这会导致失败。如果有人知道为什么jQuery
不能工作,请让我们都知道。谢谢。
(我使用的是jQuery
1.5.1和Firefox4.0,我的服务器使用正确的Access-Control-Allow-Origin
头进行响应)
发布于 2011-04-08 09:33:14
另一种可能性是设置dataType: json
会导致JQuery发送Content-Type: application/json
报头。这被CORS视为非标准标头,需要CORS印前检查请求。所以有几件事可以尝试一下:
1)尝试配置您的服务器以发送正确的印前检查响应。这将以附加标头的形式出现,如Access-Control-Allow-Methods
和Access-Control-Allow-Headers
。
2)丢弃dataType: json
设置。默认情况下,JQuery应该请求Content-Type: application/x-www-form-urlencoded
,但为了确保这一点,您可以用contentType: 'application/x-www-form-urlencoded'
替换dataType: json
发布于 2019-03-05 12:26:48
通过以下方式修改您的Jquery:
$.ajax({
url: someurl,
contentType: 'application/json',
data: JSONObject,
headers: { 'Access-Control-Allow-Origin': '*' }, //add this line
dataType: 'json',
type: 'POST',
success: function (Data) {....}
});
https://stackoverflow.com/questions/5584923
复制相似问题