Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 运行ajax函数时Safari挂起_Javascript_Html_Ajax_Post_Safari - Fatal编程技术网

Javascript 运行ajax函数时Safari挂起

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.

我有一个注册表单,onsubmit运行一个验证javascript函数来检查它

a:所有框中都有一个值

b:密码值匹配

c:电子邮件地址有效

电子邮件验证脚本进行ajax调用,以检查电子邮件地址之前是否已注册

除了Safari,它在所有浏览器中都运行良好。在Safari中,它只是挂起页面

以下是守则的相关部分:

html表单

    <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;
       }
}