首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CORS POST请求可以在普通的JavaScript中工作,但是为什么不能使用jQuery呢?

CORS POST请求可以在普通的JavaScript中工作,但是为什么不能使用jQuery呢?
EN

Stack Overflow用户
提问于 2011-04-08 01:12:01
回答 2查看 233K关注 0票数 90

我正在尝试发出一个跨域post请求,我让它在纯JavaScript中工作,如下所示:

代码语言: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,但是我不能让它工作。这就是我正在尝试的:

代码语言:javascript
复制
$.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头进行响应)

EN

回答 2

Stack Overflow用户

发布于 2011-04-08 09:33:14

另一种可能性是设置dataType: json会导致JQuery发送Content-Type: application/json报头。这被CORS视为非标准标头,需要CORS印前检查请求。所以有几件事可以尝试一下:

1)尝试配置您的服务器以发送正确的印前检查响应。这将以附加标头的形式出现,如Access-Control-Allow-MethodsAccess-Control-Allow-Headers

2)丢弃dataType: json设置。默认情况下,JQuery应该请求Content-Type: application/x-www-form-urlencoded,但为了确保这一点,您可以用contentType: 'application/x-www-form-urlencoded'替换dataType: json

票数 19
EN

Stack Overflow用户

发布于 2019-03-05 12:26:48

通过以下方式修改您的Jquery:

代码语言:javascript
复制
$.ajax({
            url: someurl,
            contentType: 'application/json',
            data: JSONObject,
            headers: { 'Access-Control-Allow-Origin': '*' }, //add this line
            dataType: 'json',
            type: 'POST',                
            success: function (Data) {....}
});
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5584923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档