我目前尝试使用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而不会出现问题,并检索正确的数据。
感谢您的帮助。
答案 0 :(得分:0)
我终于找到了解决方案。我应该提到有关服务器的更多信息(但是由于服务器在浏览器和Postman中运行良好,因此我认为问题可能出在客户端)。 好吧...这当然是服务器问题。该服务器在具有嵌入式H2数据库和JAX-RS(用于REST服务)的Apache Tomcat 9上运行。
如果还有其他人遇到我的问题:解决方案称为CORS。如果您遇到相同的问题,请首先使用Google CORS,以便了解它的含义,然后可以在Tomcat项目的web.xml和/或context.xml中进行所有必需的设置。