【发布时间】:2020-11-08 09:52:21
【问题描述】:
我想创建一个注册表单来验证您的输入,然后向 PHP 页面发送 AJAX 请求以检查您的用户名是否已被使用。之后它将提交实际的表单(位置在一个动作属性中)。
function validate() {
if (fullname.length < 90) { /*this is validating the form*/
var username_input = document.forms["myform"]["username"].value;
if (window.XMLHttpRequest) {
var usernamecheck = new XMLHttpRequest();
} else if (window.ActiveXObject) {
var usernamecheck = new ActiveXObject("Microsoft.XMLHTTP");
}
usernamecheck.open("POST", "reciever.php", true);
usernamecheck.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
usernamecheck.send("user=" + username_input); /*sending username to check if it exists*/
usernamecheck.onreadystatechange = function() {
if (usernamecheck.readyState == 4 && this.status == 200) {
if (usernamecheck.responseText == "user") {
alert('username has already been used');
return false;
}
}
};
var contactcheck = new XMLHttpRequest(); /*second request*/
contactcheck.open("POST", "reciever.php", true);
contactcheck.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
contactcheck.send("contact=" + contactw);
contactcheck.onreadystatechange = function() {
if (contactcheck.readyState == 4 && this.status == 200) {
if (contactcheck.responseText == "contact") {
alert('email has already been used');
return false;
}
}
};
}
/*reference 1 (see below)*/
}
我的问题是表单在 AJAX 运行之前就提交了,如果我在脚本显示“引用 1”的地方添加 return false;,AJAX 就会运行,但表单没有提交。
【问题讨论】:
-
能否添加监听提交事件的部分并调用
validate函数。这需要在IE9及以下的旧机器上运行吗?
标签: javascript ajax ajaxform