2017-09-05 17 views
0

私のページには2つのフォームがあり、1つは連絡先ページ用です。もう1つは登録用です。PHPでAjaxを使用して連絡先フォームを送信できません

私は両方とも-almost-全く同じことを使用しています。 私が変えるのは、私が送る必要のあるフィールドだけです。

私はあなたが正常に動作している連絡先フォームを見てみたい場合にはI JSBinを作成しました:https://jsbin.com/fetexumune/1/edit?html,js

は今、ここに私が働いていないレジスタ形式のコードを持っている:

HTML:

<form id="register-submit" method="post" action="register.php" class="register-form"> 
    <div> 
     <input type="text" name="fname" id="fname" placeholder="First Name *" required="required"/> 
    </div> 
    <div> 
     <input type="text" name="lname" id="lName" placeholder="Last Name *" required="required"/> 
    </div> 
    <div> 
     <input type="email" name="email" id="email" placeholder="Email *" required="required"/> 
    </div> 
    <div> 
     <input type="email" name="cemail" id="cemail" placeholder="Confirm Email *" required="required"/> 
    </div> 
    <div> 
     <input type="password" name="password" id="password" placeholder="Password *" required="required"/> 
    </div> 

    <div> 
     <input type="password" name="cpassword" id="cpassword" placeholder="Confirm Password *" required="required" /> 
    </div> 
    <div> 
     <input type="text" name="country" id="country" placeholder="Country *" required="required"/> 
    </div> 
    <div> 
     <input type="text" name="phone" id="phone" placeholder="Phone # *" required="required"/> 
    </div> 
    <div> 
     <div> 
      <select class="selectpicker " required="required" id="area" name="area" placeholder="Select Field *"> 
       <option value="">Select Your Field *</option> 
       <option value="IT/Software">IT/Software</option> 
       <option value="Engineering">Engineering</option> 
       <option value="Economics">Economics</option> 
       <option value="Politics">Politics</option> 
       <option value="Sports">Sports</option> 
       <option value="Music">Music</option> 
       <option value="Sales">Sales</option> 
       <option value="Other">Other</option> 
      </select> 
     </div> 
    </div> 
    <div> 
     <textarea id="details" name="message" rows="5" placeholder="Send any other detail (optional)"></textarea> 
    </div> 
    <hr> 
    <h4>Credit Card Information:</h4> 
    <hr> 
    <div> 
     <input type="text" name="nameoncard" id="nameoncard" placeholder="Name on Card *" required="required"/> 
    </div> 
    <div> 
     <input type="number" name="ccnumber" id="ccnumber" placeholder="Card Number *" required="required"/> 
    </div> 
    <div> 
     <div> 
      <label for="expiry-month">Expiration Date *</label> 
      <div> 
       <div> 
        <div> 
         <select name="expiry-month" id="expiry-month" required="required"> 
          <option value="01">Jan (01)</option> 
          <option value="02">Feb (02)</option> 
          <option value="03">Mar (03)</option> 
          <option value="04">Apr (04)</option> 
          <option value="05">May (05)</option> 
          <option value="06">June (06)</option> 
          <option value="07">July (07)</option> 
          <option value="08">Aug (08)</option> 
          <option value="09">Sep (09)</option> 
          <option value="10">Oct (10)</option> 
          <option value="11">Nov (11)</option> 
          <option value="12">Dec (12)</option> 
         </select> 
        </div> 
        <div> 
         <select name="expiry-year" id="expiry-year" required="required"> 
          <option value="17">2017</option> 
          <option value="18">2018</option> 
          <option value="19">2019</option> 
          <option value="20">2020</option> 
          <option value="21">2021</option> 
          <option value="22">2022</option> 
          <option value="23">2023</option> 
          <option value="24">2024</option> 
          <option value="25">2025</option> 
          <option value="26">2026</option> 
          <option value="27">2027</option> 
         </select> 
        </div> 

        <div> 
         <input type="number" name="ccv" id="ccv" placeholder="Card CVV: Security Code *" required="required"/> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

    <div class="register"> 
     <hr> 
     <h4>Choose The Proper Services:</h4> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" id="checkAll" value="All Services"> All Services 
      </label> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="Content Strategy" name="services" id="a1"> Content Strategy 
      </label> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="ppc" name="services" id="a2"> Social Media Marketing 
      </label> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="social" name="services" id="a3"> Search Engine Optimization 

      </label> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="ads" name="services" id="a4"> Advanced Web Analytics 
      </label> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="e-marketing" name="services" id="a5"> Email Marketing 
      </label> 
     </div> 
     <hr> 
    </div> 

    <div> 
     <section id="pricelist"> 
      <div> 
       <div class="row pricelist-title"> 
        <div class=" text-center"> 
         <h2 class="title">Web Ads Promo Plan Options</h2> 
         <p class="sub-title">We provide the best packages for all your needs.</p> 
        </div> 
       </div> 
       <div> 
        <div> 
         <div> 
          <ul class="price"> 
           <li class="header">START UP</li> 
           <li class="grey"><label for="plan1">Choose <input type="checkbox" value="plan1" id="plan1" name="plan"></label></li> 
          </ul> 
         </div> 
        </div> 
        <div> 
         <div class="table-columns"> 
          <ul class="price"> 
           <li class="header bg-gold">SME</li> 
           <li class="grey"><label for="plan2">Choose <input type="checkbox" value="plan2" id="plan2" name="plan"></label></li> 
          </ul> 
         </div> 
        </div> 
        <div> 
         <div class="table-columns"> 
          <ul class="price"> 
           <li class="header bg-black">ENTERPRISE</li> 
           <li class="grey"><label for="plan3">Choose <input type="checkbox" value="plan3" id="plan3" name="plan"></label></li> 
          </ul> 
         </div> 
        </div> 
        <div> 
         <div class="table-columns"> 
          <ul class="price"> 
           <li class="header bg-green">All Ads Package</li> 
           <li class="grey"><label for="plan4">Choose <input type="checkbox" value="plan4" id="plan4" name="plan"></label></li> 
          </ul> 
         </div> 
        </div> 
       </div> 
      </div> 

     </section> 
    </div> 
    <hr> 
    <div> 
     <button type="submit" name="submit" required="required">Submit</button> 
    </div> 
</form> 

PHP:

<?php 
    header('Content-type: application/json'); 
    $status = array(
     'status'=>'success', 
     'message'=>'Thank you! One of our agents will contact you soon.' 
    ); 

    $debug_log = "./debugginglog.txt"; 
    $currContent = file_get_contents($debug_log); 
    file_put_contents($debug_log, "Trying to send email ... \n"); 

    $subject = 'Registration Form'; 
    $firstName = @trim(stripslashes($_POST['firstName'])); 
    $lastName = @trim(stripslashes($_POST['lastName'])); 
    $email = @trim(stripslashes($_POST['email'])); 
    $confirmEmail = @trim(stripslashes($_POST['confirmEmail'])); 
    $password = @trim(stripslashes($_POST['password'])); 
    $confirmPass = @trim(stripslashes($_POST['confirmPass'])); 
    $country = @trim(stripslashes($_POST['country'])); 
    $number = @trim(stripslashes($_POST['number'])); 
    $area = @trim(stripslashes($_POST['area'])); 
    $details = @trim(stripslashes($_POST['details'])); 
    $nameoncard = @trim(stripslashes($_POST['nameoncard'])); 
    $ccnumber = @trim(stripslashes($_POST['ccnumber'])); 
    $expirymonth = @trim(stripslashes($_POST['expirymonth'])); 
    $expiryyear = @trim(stripslashes($_POST['expiryyear'])); 
    $ccv = @trim(stripslashes($_POST['ccv'])); 
    $services = @trim(stripslashes(implode(', ', $_POST['services']))); 
    $plan = @trim(stripslashes(implode(', ', $_POST['plan']))); 

    $email_from = $email; 
    $email_to = '[email protected]'; //replace with your email 

    $body = 
     'Name: ' . $firstName . "\n\n" . 
     'Last Name: ' . $lastName . "\n\n" . 
     'Email: ' . $email . "\n\n" . 
     'Confirm Email: ' . $confirmEmail . "\n\n" . 
     'Password: ' . $password . "\n\n" . 
     'Confirm Pass: ' . $confirmPass . "\n\n" . 
     'Country: ' . $country . "\n\n" . 
     'Number: ' . $number . "\n\n" . 
     'Field: ' . $area . "\n\n" . 
     'Details: ' . $details . "\n\n" . 
     'Name on card: ' . $nameoncard . "\n\n" . 
     'Card number: ' . $ccnumber . "\n\n" . 
     'Expiration Date: ' . $expirymonth . "/" . $expiryyear . "\n\n" . 
     'Security code: ' . $ccv . "\n\n" . 
     'Services: ' . $services . "\n\n" . 
     'Plan: ' . $plan . "\n\n"; 

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); 

    $currContent = file_get_contents($debug_log); 
    file_put_contents($debug_log, "Response ..." . $success . "\n"); 

    echo json_encode($status); 

die; 
?> 

JavaScriptを/ jQueryの:私のために

$('#register-submit').submit(function (e) { 
     e.preventDefault(); 
     var firstName = $('#fname').val(); 
     var lastName = $('#lName').val(); 
     var email = $('#email').val(); 
     var confirmEmail = $('#cemail').val(); 
     var password = $('#password').val(); 
     var confirmPass = $('#cpassword').val(); 
     var country = $('#country').val(); 
     var number = $('#phone').val(); 
     var area = $('#area').val(); 
     var details = $('#details').val(); 
     var nameoncard = $('#nameoncard').val(); 
     var ccnumber = $('#ccnumber').val(); 
     var expirymonth = $('#expiry-month').val(); 
     var expiryyear = $('#expiry-year').val(); 
     var ccv = $('#ccv').val(); 
     var services = []; 
     $('[name="services"]:checked').each(function (i, e) { 
      services.push(e.value); 
     }); 
     var plan = []; 
     $('[name="plan"]:checked').each(function (i, e) { 
      plan.push(e.value); 
     }); 

     var data = { 
      'firstName': firstName, 
      'lastName': lastName, 
      'email': email, 
      'confirmEmail': confirmEmail, 
      'password': password, 
      'confirmPass': confirmPass, 
      'country': country, 
      'number': number, 
      'area': area, 
      'details': details, 
      'nameoncard': nameoncard, 
      'ccnumber': ccnumber, 
      'expirymonth': expirymonth, 
      'expiryyear': expiryyear, 
      'ccv': ccv, 
      'services': services, 
      'plan': plan, 
     }; 

     $.ajax({ 
      type: "POST", 
      url: "register.php", 
      data: data, 
      success: function (message) { 
       var response = message; 
       console.log('response top:', response); 
       if (response.status === 'success') { 
        $('.register-form')[0].reset(); 
        console.log('response:', response); 
       } 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       console.log('response:', textStatus); 
       console.log('XMLHttpRequest:', XMLHttpRequest); 
       console.log('errorThrown:', errorThrown); 
      } 
     }); 
    }); 

奇妙なことは、お問い合わせフォームが正常に動作しているとレジスタフォームがないという事実です。

はAJAX呼び出しのsuccess一部では、私は、コンソールでこれを印刷しているconsole.log('response:', response);を持っている:

応答:{状態:「成功」のメッセージ:「ありがとう、私たち剤の1つを!すぐにご連絡いたします。」}

​​の場合は、成功のセクションからの応答メッセージが表示されます。

私は間違っていますか?

EDIT

私は1つが動作していると私は私の個人的なメールアカウントにテストしていているため、他のは、あるはありません知っています。 コンタクトフォームのメールを受け取りましたが、登録フォームから何も取得していません。

+0

のResponse.Statusを使用することができますフォームからデータを取得します。 response.status == 'success'(JUST 2 =文字列に等しい) – Roy

+1

どうやって動作していないのですか?あなたは電子メールを受け取っていますか、それともdebug_logに基づいていますか? –

+0

*私にとって一番奇妙なことは、連絡フォームが正しく働いていて、登録フォームがないということです。 –

答えて

0

は$アヤックスのparam dataType: 'json'に追加し、あなたが '成功' === $('#register-submit').serializeArray();

関連する問題