CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?

CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?

我正在尝试制作一个Cross Origin帖子请求,并且我使用这样的普通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和Firefox 4.0,我的服务器正在使用正确的Access-Control-Allow-Origin标头进行响应)


米脂
浏览 635回答 3
3回答

蛊毒传说

另一种可能性是设置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默认请求,但只是为了确定,你可以替换dataType: json为contentType: 'application/x-www-form-urlencoded'
打开App,查看更多内容
随时随地看视频慕课网APP