2017-05-06 1 views
0

http://coreelectric.us/contact.php의 양식을 처리하는 데 2 ​​분이 걸립니다. 내 로컬 호스트에서 그것은 즉각적입니다. 그러나 사이트를 생방송으로 만들면 영원히 걸립니다. 여기서 프로세스 페이지에는 다음이 포함자바 스크립트가 끊어지고 양식을 처리하는 데 거의 2 분이 걸립니다.

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

자바 스크립트 그것이 처리하는 데 사용되는 폼 자체의 코드 ...

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

는 ...이다

$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); 

전화가 끊어 질 가능성을 이해하는 데 도움을 준 점에 진심으로 감사드립니다. 그것은 ... 자바 스크립트의이 두 라인 사이에 사전

+0

아약스 요청 전후에 시간을 보았습니까? 내 생각에 당신의 서버는 로컬 호스트에서는 문제가 없다고 느껴진다. –

+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에서 if를 제거하고 javascript의 오류 함수가 PHP 오류를 포착하지 않는 경우 시도해보십시오.

0

다른 사이트에서 동일한 코드를 실행하여 3 개의 다른 사이트에서 같은 양식을 실행하고 번개처럼 빠르게 ... 다른 서버의 일부 문제로 축소했습니다. 관심이 없습니다. 문제 해결에. 나는 이것이 닫힌다고 믿는다. 의견을 보내 주셔서 감사합니다.

관련 문제