无法使用AJAX连接到本地Rest Service(状态:0)

时间:2018-09-23 12:38:28

标签: ajax rest connection status

我目前尝试使用AJAX连接到本地Rest服务。但是似乎我无法获得任何连接。其余服务在http://localhost:8080/LernApp/

下运行

对于测试,我尝试连接到http://localhost:8080/LernApp/user/并返回JSON(GET)。

我在浏览器(可以正常工作并显示JSON)和Postman(也可以正常工作并获得状态码为200(确定)的Answer)中测试了此链接。

但是,如果我尝试使用AJAX连接到它,它将失败(状态代码0)。 我的第一次尝试是:

var xhttp = typeof XMLHttpRequest != 'undefined' ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    xhttp.open('GET','http://localhost:8080/LernApp/user/',true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.onreadystatechange = function() {
        var data;
        if(xhttp.readyState==4) {
            if(xhttp.status==200) {
                alert("OK");
            } else if(xhttp.status==404) {
                alert("404");
            } else {
                alert("ERROR CODE: " + xhttp.status);
            }
        }
    }
    xhttp.send();

我接下来尝试的是:

$.ajax({
        type: 'GET',
        url:  'http://localhost:8080/LernApp/user/',
        dataType: 'json',
        async: true,
        success: function(result) {
            alert(result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
   });

我最后尝试的是:

$.ajax({
        type: "GET",
        url: 'http://localhost:8080/LernApp/user/',
        headers: {          
            Accept : "application/json"         
        }
    })
    .done(function (data, textStatus, jqXHR) {
        alert(data);
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        alert("STATUS: " + jqXHR.status);
    });

这些似乎都不起作用。每个函数返回状态码0。 有人知道这里发生了什么吗?就像我说过的那样:Browser和Postman可以连接到url而不会出现问题,并检索正确的数据。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。我应该提到有关服务器的更多信息(但是由于服务器在浏览器和Postman中运行良好,因此我认为问题可能出在客户端)。 好吧...这当然是服务器问题。该服务器在具有嵌入式H2数据库和JAX-RS(用于REST服务)的Apache Tomcat 9上运行。

如果还有其他人遇到我的问题:解决方案称为CORS。如果您遇到相同的问题,请首先使用Google CORS,以便了解它的含义,然后可以在Tomcat项目的web.xml和/或context.xml中进行所有必需的设置。