为什么$ .ajax调用成功但是通过XMLHttpRequest调用失败并出现飞行前错误?

时间:2017-11-22 09:27:24

标签: javascript jquery ajax post xmlhttprequest

我使用的是Java 8,Tomcat 8,Spring 3.0,jQuery 2.2.4,Chrome浏览器。

我使用$ .ajax的请求是成功的。我正在远离jQuery,并希望使用XMLHttpRequest对象。我正在获得" Access-Control-Allow-Origin"错误。

我在javascript中设置以下参数。

var xhttp = new XMLHttpRequest();
xhttp.open("POST", request, true);
xhttp.onreadystatechange = function() {
    if (this.status == 200) {
        alert("Saved Successfully.");
    }
};

xhttp.setRequestHeader("Content-type", "plain/text;charset=UTF-8");
xhttp.setRequestHeader("crossDomain", "true");
xhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
xhttp.setRequestHeader("Accept", "text/plain; */*; *");

xhttp.send(data);

以下是jquery调用,有效。

$.ajax({
            type: "POST",
            url: request,
            data: data,
            dataType: 'text',
            crossDomain: "true",
            statusCode: {
                200: function(data) {
                    alert("Saved Successfully.");
                }
            }
        });

我将以下参数设置为响应对象。

response.addHeader( "Content-Type", "text/plain" );
response.addHeader("Access-Control-Allow-Origin", "*");     
response.addHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");
response.addHeader("Access-Control-Allow-Headers","Content-Type, Content-
  Range, Content-Disposition, Content-Description");

相同的设置适用于JQuery调用,因此我认为设置不存在问题。

有人可以建议缺少什么吗?

以下代码工作:

var xhttp = new XMLHttpRequest();
xhttp.open("POST", request, true);
xhttp.onreadystatechange = function() {
   if (this.status == 200) { }};

//xhttp.setRequestHeader("crossDomain", "true");
xhttp.setRequestHeader("Accept", "text/plain; *//*; *");
//xhttp.withCredentials = true;
xhttp.send(data);

0 个答案:

没有答案