//注册用户 function regis(){ var name = $("input[id='wbk']").val(); var password = $("input[name='password']").val(); var telephone = $("input[name='telephone']").val(); var username = $("input[name='username']").val(); if(name==""||password==""||telephone==""||username==""){ alert("请填写完整的信息!"); return false; }else{ $.post("http://localhost:8888/api/userServlet",{"opr":"adduser", "name":name,"nickname":username,"pwd":password,"tel":telephone},function(data){ console.info(data); if("ok"==data) { alert("注册成功!"); window.location.href='http://localhost:8888/page/login.html'; return true; }else{ alert("注册失败!"); return false; } }); } } 为什么表单还提交成功
时间: 2023-07-19 19:56:37 浏览: 89
在上面的代码中,当所有输入框都不为空时,您使用了 jQuery 中的 `$.post()` 方法来向后端发送注册请求。这个方法是异步的,因此它会在后台处理请求的同时立即返回,并且不会阻止表单的提交。
为了解决这个问题,您需要在提交表单之前等待 `$.post()` 方法完成并得到响应。您可以使用 jQuery 的 `$.ajax()` 方法来实现这一点,因为它可以通过设置 `async` 选项为 `false` 来进行同步请求。下面是修改后的代码:
```javascript
function regis() {
var name = $("input[id='wbk']").val();
var password = $("input[name='password']").val();
var telephone = $("input[name='telephone']").val();
var username = $("input[name='username']").val();
if(name=="" || password=="" || telephone=="" || username=="") {
alert("请填写完整的信息!");
return false;
}
var result = false;
$.ajax({
url: "http://localhost:8888/api/userServlet",
type: "post",
data: {
"opr": "adduser",
"name": name,
"nickname": username,
"pwd": password,
"tel": telephone
},
async: false, // 设置为同步请求
success: function(data) {
console.info(data);
if("ok" == data) {
alert("注册成功!");
window.location.href = 'http://localhost:8888/page/login.html';
result = true;
}
else {
alert("注册失败!");
result = false;
}
},
error: function() {
alert("请求失败!");
result = false;
}
});
return result;
}
```
在上面的代码中,我们使用了 `$.ajax()` 方法,设置了 `async` 选项为 `false`,这样请求会变成同步的。在请求成功和请求失败的回调函数中,我们设置了 `result` 变量的值,并在函数的末尾返回这个变量的值。因此,如果注册成功,`result` 的值将为 `true`,否则为 `false`。最终,如果 `result` 的值为 `true`,表单提交将继续,否则将被阻止。
请注意,同步请求可能会导致一些性能问题,因为它会阻塞 JavaScript 执行,直到请求完成为止。因此,建议您仅在必要时使用同步请求。
阅读全文