我正在尝试向Java方法发送POST
请求,该方法使用数据库中的给定表单参数创建一个帐户。
如果成功创建了该帐户,则该方法返回true,然后应该重定向到链接。但是,除非存在alert("")
函数,否则下面的代码不起作用。
我认为它与异步模式有关,但是我是JavasScript的新手,将非常感谢您的帮助:)
这是代码:
function createAccount(){
var xhr = new XMLHttpRequest();
var fname = document.getElementById("fname").value;
var surname = document.getElementById("surname").value;
var email = document.getElementById("email").value;
var password = document.getElementById("password").value;
var rpassword = document.getElementById("rpassword").value;
var emp_no = document.getElementById("emp_no").value;
xhr.open('POST','http://localhost:8080/di24_app/di24/create',true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
xhr.send('fname='+fname+'&surname='+surname+'&email='+email+'&password='+password+'&rpassword='+rpassword+'&emp_no='+emp_no);
xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200) {
if(this.responseText == "false"){
document.getElementById("result").innerHTML = "Error creating account!";
document.getElementById("result").style.textAlign = "center";
}
else if(this.responseText == "true"){
window.location.href = "http://localhost:8080/di24_app/html/home_page/home.html";
}
}
}
alert("");
}
最佳答案
问题是您有一个类型为“ submit”的按钮,并且onclick="createAccount()"
在<form/>
内,单击该按钮后,浏览器将自动发布数据并刷新页面,因此执行永远不会结束。
在html button标记上执行以下操作:createAccount()
在<button type ="submit" onclick="return createAccount()">Create</button>
之前添加return
在函数createAccount()的最后添加createAccount()
。
从提交类型按钮调用方法时返回,将指示浏览器不自动发布表单数据。
function createAccount(){
....
xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200) {
if(this.responseText == "false"){
document.getElementById("result").innerHTML = "Error creating account!";
document.getElementById("result").style.textAlign = "center";
}
else if(this.responseText == "true"){
window.location.href = "http://localhost:8080/di24_app/html/home_page/home.html";
}
}
}
//alert("");
return false; // important
}