Javascript 运行ajax函数时Safari挂起
我有一个注册表单,onsubmit运行一个验证javascript函数来检查它 a:所有框中都有一个值 b:密码值匹配 c:电子邮件地址有效 电子邮件验证脚本进行ajax调用,以检查电子邮件地址之前是否已注册 除了Safari,它在所有浏览器中都运行良好。在Safari中,它只是挂起页面 以下是守则的相关部分: html表单Javascript 运行ajax函数时Safari挂起,javascript,html,ajax,post,safari,Javascript,Html,Ajax,Post,Safari,我有一个注册表单,onsubmit运行一个验证javascript函数来检查它 a:所有框中都有一个值 b:密码值匹配 c:电子邮件地址有效 电子邮件验证脚本进行ajax调用,以检查电子邮件地址之前是否已注册 除了Safari,它在所有浏览器中都运行良好。在Safari中,它只是挂起页面 以下是守则的相关部分: html表单 <form name="login" action="<?php echo htmlspecialchars($pre_link.'register3.
<form name="login" action="<?php echo htmlspecialchars($pre_link.'register3.php'); ?>" method="post" onsubmit="return validateReg();">
<div id="register_label">Email Address:<span id="req">*</span></div>
<input class="register_input" id="myregusername" name="myusername" size="14"/><br><br>
<div id="register_label">Password:<span id="req">*</span></div>
<input class="register_input" id="mypassword" name="mypassword" size="14" type="password"/><br><br>
<div id="register_label">Confirm Password:<span id="req">*</span></div>
<input class="register_input" id="mypassword1" name="mypassword1" size="14" type="password"/><br><br>
<br /><br />
<input type="submit" id="loginBtn" name="submit" value="Next" />
</form>
如果我删除ajax调用,那么它在Safari中运行良好
我读过关于Safari缓存$post的文章,但我没有足够的知识来将我的发现整合到我的代码中并使其工作。我添加了“headers:{“cache control”:“no cache”}”,但这仍然不能解决问题
如果该电子邮件已注册,则会抛出错误消息,但如果在数据库中未找到该电子邮件,则会抛出“emailk good”警报,但不会将true返回到原始语句,因此表单不会被提交
如果您已经加载了jQuery,为什么不一直使用它呢?还有一个输入错误:
$.post(“checkregemail.php”,用户名:myusername},
应该是$.post(“checkregemail.php”,{“username”:myusername},
-leading{和QUOTE我的代码中没有输入错误,它只是从我复制和粘贴代码的相关部分开始的。.现在更新了。jQuery能解决我的Safari问题吗?可能不会,但是var myusername=document.getElementById(“myregusername”);
也是错误的,应该是var myusername=document.getElementById(“myregusername”).value;
或var myusername=$(“#myregusername”).val()
我改变了这一点,但仍然没有乐趣。它可以在电子邮件已注册时找到并显示错误消息,但当它在数据库中找不到它时,它不会将true语句返回到原始函数以便提交表单。我已使用重新编写的ajax调用更新OP。您知道,您的ajax验证将l除非将async设置为false,否则不会在validate函数中返回任何内容?
function validateReg(){
var origBorder = "1px solid #CCCCCC";
var errorBorder = "1px solid red";
var myregusername = document.getElementById("myregusername");
var mypassword = document.getElementById("mypassword");
var mypassword1 = document.getElementById("mypassword1");
var errorstr = "";
var error = false;
myregusername.style.border = origBorder;
mypassword.style.border = origBorder;
mypassword1.style.border = origBorder;
if(myregusername.value.length == 0) {
errorstr = errorstr + "\n" + "Please enter your email address";
error = true;
myregusername.style.border = errorBorder;
}
if(mypassword.value.length<=5) {
errorstr = errorstr + "\n" + "Please enter your password that is at least 6 characters long";
error = true;
mypassword.style.border = errorBorder;
}
if(mypassword1.value!=mypassword.value) {
errorstr = errorstr + "\n" + "Your passwords do not match";
error = true;
mypassword.style.border = errorBorder;
mypassword1.style.border = errorBorder;
}
if(error) {
alert(errorstr);
return false;
} else {
if (checkMail()){
return true;
} else {
return false;
}
}
}
function checkMail(){
var myusername = document.getElementById("myregusername") ;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(myusername.value)) {
function checkMail3(){
var myusername = document.getElementById("myregusername").value ;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(myusername)){
$.ajax({
url: "checkregemail.php",
type: "post",
headers: { "cache-control": "no-cache" },
data:{ username : myusername },
success: function(data) {
if(data=='1'){
alert("sorry this email address has already been registered\nClick login to sign in with his email address");
document.getElementById("myregusername").focus();
return false;
}else{
alert("good email address");
return true;
}
},
error:function(){
alert("failure");
}
});
} else {
var errorBorder = "1px solid red";
var error = false;
alert('Please enter a VALID email address');
myusername.style.border = errorBorder;
return false;
}
}
} else {
var errorBorder = "1px solid red";
var error = false;
alert('Please enter a VALID email address');
myusername.style.border = errorBorder;
return false;
}
}