2017-05-06 69 views
0

我有一个表格,上面有http://coreelectric.us/contact.php,需要2分钟来处理。在我的本地主机上它是即时的。但是,当我把这个网站投入使用时,它就会永远存在。这里是正在使用的JavaScript来处理它是在窗体本身的代码...Javascript已挂起,需要将近2分钟来处理表格

<form action="" method="post" class="form-content" id="contact-form" > 
     <div class="form-container"> 
    <div id="thanks">Your email was sent successfully. Thank you, we will contact you soon.</div> 
    <div class="input-form"> 
       <div class="input-left"> 
           <label>*First Name :</label> 
           <input id="fname" type="text" name="fname" placeholder="Enter your first name" /> 
       </div> 
       <div class="input-right"> 
           <label>*Last Name :</label> 
           <input id="lname" type="text" name="lname" placeholder="Enter your last name" /> 
       </div> 
       <div class="clearfix"></div> 
    </div> 
    <div class="input-form"> 
       <div class="input-left"> 
           <label>*Email :</label> 
           <input id="email" type="text" name="email" placeholder="Enter your valid email address " /> 
       </div> 
       <div class="input-right"> 
           <label>Phone Number :</label> 
           <input id="phone" type="text" name="phone" placeholder="Enter your phone only digit" /> 
       </div> 
       <div class="clearfix"></div> 
    </div> 
    <div class="input-form"> 
       <label>*Subject :</label> 
       <input id="subject" type="text" name="subject" placeholder="Subject"/> 
       <div class="clearfix"></div>    
    </div> 
    <div class="input-form">  
       <label>*Message :</label> 
       <textarea id="message" name="message" rows="10" placeholder="Enter your message here"></textarea> 
    </div> 
      <div class="input-form">  
       <label>*You must authenticate:</label> 
       <div style="float: left;" class="g-recaptcha" id="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" data-callback="onReturnCallback" data-theme="light"></div> 
      </div> 
      <input type="submit" style="float: right;" class="btn st-btn btn-rounded btn-primary" value="Submit" /> 
    <div class="error-msg"></div> 
     </div> 
</form> 

...

<script> 

    document.getElementById('phone').addEventListener('input', function (evt) { 
    evt.target.value = evt.target.value.replace(/\D/g, ''); 
}); 

$(document).on("keyup", "input.error", function(){ 
    phone=$('#phone').val(); 
    if($.isNumeric(phone)){ 
    $('#phone').removeClass("error"); 
    } 
}); 

     $(document).ready(function(){ 
      $('#contact-form').submit(function(){ 
       $('#contact-form .error').removeClass('error'); 
        $('#contact-form .error-msg').hide() 
       form = true; 
       elm = $(this); 
       fname = $('#fname').val(); 
       lname = $('#lname').val(); 
       howhear = $('#how_hear').val(); 
       state = $('#state').val(); 
       street = $('#street').val(); 
       city = $('#city').val(); 
       zip = $('#zcode').val(); 
       subject = $('#subject').val(); 
       address = $('#address').val(); 
       email = $('#email').val(); 
       phone = $('#phone').val(); 
       message = $('#message').val(); 
       email_regex = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 

       if(email == ''){ 
         $('#email').addClass('error'); 
         form = false; 

       }else if(email_regex.test(email) == false){ 
         $('#email').addClass('error'); 
         form = false; 
       } 

       if(fname==''){ 
        $('#fname').addClass('error'); 
        form = false; 
       } 

       if(lname==''){ 
        $('#lname').addClass('error'); 
        form = false; 
       } 

       if(subject==''){ 
        $('#subject').addClass('error'); 
        form = false; 
       } 

       if(phone==''){ 
        $('#phone').addClass('error'); 
        form = false; 
       } 
       if(howhear==''){ 
        $('#how_hear').addClass('error'); 
        form = false; 
       } 
       if(state==''){ 
        $('#state').addClass('error'); 
        form = false; 
       } 
       if(street==''){ 
        $('#street').addClass('error'); 
        form = false; 
       } 

       if(zip==''){ 
        $('#zcode').addClass('error'); 
        form = false; 
       } 
       if(address==''){ 
        $('#address').addClass('error'); 
        form = false; 
       } 
       if(city==''){ 
        $('#city').addClass('error'); 
        form = false; 
       } 
       if(howhear==''){ 
        $('#how_hear').addClass('error'); 
        form = false; 
       } 

       if(message==''){ 
        $('#message').addClass('error'); 
        form = false; 
       } 

       if(grecaptcha.getResponse() ==""){ 
        $('#g-recaptcha').addClass('error'); 
        $('.error-msg').html('*Captcha ').show(); 
        form = false; 
       } 

       if(form == false){ 
        $('.error-msg').html('*Please filled correctly highlighted fields').show(); 

       } 


       if(form){ 
        $.ajax({ 
         url:'email.php', 
         type:'post', 
         data: $('#contact-form').serialize(), 
         success: function(res){ 
          $('#thanks').show(); 
          setTimeout(function() { 
          $('#thanks').fadeOut('fast'); 
          }, 60000); // <-- time in milliseconds 
          $('#contact-form')[0].reset(); 
         } 
        }); 
       } 
       return false; 
      }); 
     }); 
</script> 

过程页面包含以下......

$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$name = $fname."&nbsp;".$lname; 
$street = $_POST['street']; 
$city = $_POST['city']; 
$zip = $_POST['zcode']; 
$address = $_POST['address']; 
$phone = $_POST['phone']; 
$email = $_POST['email']; 
$how_hear = $_POST['how_hear']; 
$newsletter = $_POST['newsletter']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$domain = $_SERVER['SERVER_NAME']; 


$to = "[email protected], ".$email; 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
$headers .= "From:".$email . "\r\n"; 
$headers .= "BCC: [email protected], [email protected] \r\n"; 


$txt = '<html style="background-color:#68B7F4">' 
. '<div style="background-color:#FFF; padding: 10px;"><img 
src="http://coreelectric.us/images/logo.png" alt="Core Electric" > 
</div>' 
. '<div>An email has been received from the contact page at 
'.$domain.'. The following information was provided:<br><br></div>' 
. '<table width="100%"><tr><td style="text-align: right; width: 
15%;">Name: </td><td style="text-align: left; width: 
85%;">'.$name.'</td></tr>' 
. '<tr><td style="text-align: right; width: 15%;">Phone: </td><td 
style="text-align: left; width: 85%;">'.$phone.'</td></tr>' 
. '<tr><td style="text-align: right; width: 15%;">Email: </td><td 
style="text-align: left; width: 85%;">'.$email.'</td></tr>' 
. '<tr><td style="text-align: right; vertical-align: top; width: 
15%;">Message: </td><td style="text-align: left; width: 
85%;">'.$message.'</td></tr></table>' 
. '<br><br>A representative will be in contact with you within 24 
hours.' 
. '</html>'; 
mail($to,$subject,$txt,$headers); 

我真的很感谢任何帮助,理解什么可能会导致挂断。它挂断这些2行的JavaScript之间...提前

+0

你有没有试过在ajax请求前后显示时间?我猜你的服务器很慢,因为你说它在localhost上很好。 –

+0

不可能与javascript ....浏览器有任何关系,HTML和脚本代码是相同的。你似乎无法检查'mail()'是否成功,并执行任何操作,如发送响应并退出时 – charlietfl

+0

如何在ajax请求前后显示时间?你会在哪里推荐检查mail()是否成功? JS或PHP? – meeshuk

回答

0
  if(form){ 
       console.log(Date.now()) 
       $.ajax({ 
        url:'email.php', 
        type:'post', 
        data: $('#contact-form').serialize(), 
        success: function(res){ 
         console.log(Date.now()) 
         console.log(res) 
         $('#thanks').show(); 
         setTimeout(function() { 
         $('#thanks').fadeOut('fast'); 
         }, 60000); // <-- time in milliseconds 
         $('#contact-form')[0].reset(); 
        }, 
        error: function(error) { 
         console.log(Date.now()) 
         console.log(error) 
        } 
       }); 
      } 

和PHP

if(mail($to,$subject,$txt,$headers)) { 
    echo "OK"; 
} else { 
    echo "Whoops"; 
} 

到那个

data: $('#contact-form').serialize(), 
success: function(res){ 

谢谢,你可能至少确定其中是问题。也可以尝试删除如果在PHP中,并尝试如果JavaScript中的错误函数不会捕获一个PHP错误。

0

我在不同的服务器上运行我的原始代码,我现在在3个不同的站点上运行相同的表单,并且闪电般快速...缩小了与其他服务器的一些问题,我没有兴趣在故障排除。我相信这个是封闭的。谢谢你的反馈。