我做了一个 REST 服务,如果登录正确,它将返回一个字符串“hej”。 我已经在 Java 中使用 Rest 客户端进行了测试,它工作正常,但对于 javascript 来说还很陌生,需要一些帮助。
我正在使用这个功能
function UserAction() {
console.log(User());
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:8080/Footballmanagerrestservice/webresources/login");
xhttp.setRequestHeader("login", User());
xhttp.responseType = 'text';
xhttp.onreadystatechange = function () {
console.log('DONE', xhttp.readyState);
if (xhttp.readyState == 4) {;
// handle response
var response = xhttp.responseText;
console.log(response);
if (response == "hej") {
var url = "http://localhost:8080/FM3/spil2.jsp";
window.location.href = url;
}
}
};
// send the request *after* the callback is defined
xhttp.send();
return false;
}
function User() {
username = document.getElementById("username").toString();
username = document.getElementById("password").toString();
var UserAndPass = "?username=" + username + "&password=" + password;
return UserAndPass;
}
我向您展示了我的 Java 客户端,也许您可以明白为什么它不起作用。
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
String root="http://localhost:8080/Footballmanagerrestservice/webresources/";
String functionPath="login";
String parameters="?username=s153518&password=holger";
Response res = client.target(root+functionPath+parameters)
.request(MediaType.APPLICATION_JSON).get();
String svar = res.readEntity(String.class);
System.out.println(svar);
}
请您参考如下方法:
代码的第一部分看起来不错,以下部分必须在函数内处理,因为本质上是异步的
var response = JSON.parse(xhttp.responseText);
console.log(response);
if (response.toString() == "hej") {
var url = "http://localhost:8080/FM3/spil2.jsp";
window.location.href = url
}
return false;
文档:https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/onreadystatechange
本质上,您试图将响应作为同步调用来处理,但事实并非如此,响应不是立即可用的,因此您必须注册一个回调(来自文档的回调必须附加到字段 onreadystatechange
),一旦服务器响应可用,就会由 javascript 触发。
尝试像这样改变它:
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4) {
// handle response
var response = JSON.parse(xhttp.responseText);
console.log(response);
if (response.toString() == "hej") {
var url = "http://localhost:8080/FM3/spil2.jsp";
window.location.href = url
}
}
}
xhr.send();