2016-09-18 2 views
1

メールフォームを作成し、AJAXを使用して、PHPMailerを使用して電子メールを送信する外部PHPファイルにリンクします。だから私は、PHPの上でこのコードがあります。フォームフィールドの値がPHPファイルに渡されない

if(count($_POST) > 0){ 

    $message= 
    'Full Name: '.$_POST['name'].'<br /> 
    Email: '.$_POST['email'].'<br /> 
    Message: '.$_POST['textarea'].'<br /> 
    Current Website: '.$_POST['website'].'<br /> 
    Business Name: '.$_POST['business'].'<br /> 
    '; 

と、ローカルホストで

  • WAMPを使用して、これは正常に動作しますとでそれぞれのフィールド
  • を電子メールで送信しますPHPファイル内のif(count($_POST) > 0)で電子メールが処理されない
  • if文が削除された場合、電子メールが送信され、受信しますが、電子メールには「フルネーム:」という文字列が含まれています。と "電子メール:"などと空白とnでいっぱいにo値をHTMLフォームから入力します。ここではAJAXコードです:

    var ajax = { 
        isSubmiting: false, 
        send: function() { 
    
         if(ajax.isSubmiting == false) { 
          ajax.isSubmiting = true; 
    
          var name = $("input[name=name]").val(); 
          var email = $("input[name=email]").val(); 
          var textarea = $("textarea").val(); 
          var business = $("input[name=business]").val(); 
          var website = $("input[name=website]").val(); 
    
           ajax.SetText("Sending..."); 
           $.post("sendmail.php", { 
            name: name, email: email, textarea: textarea, business: business, website: website 
           }, function(data) { 
            if (data.trim() == "true") { 
    
             ajax.SetText("Sent!"); 
             console.log(data); 
    
    
             $.get("sent.html", function(sentData){ 
    
              $("#content").html(sentData); 
    
             }); 
    
            } else { 
             ajax.SetText("Send mail"); 
             console.log(data); 
             $.get("unsent.html", function(sentData){ 
    
              $("#content").html(sentData); 
    
             }); 
    
    
            } 
    
            ajax.isSubmiting = false; 
           }); 
    
         } 
         else alert("You can only send one email at a time!"); 
        }, 
        SetText: function(text) { 
         $("input[type=button]").val(text); 
        } 
    } 
    

が、これは、フォームのHTMLマークアップです:これが起こっされる理由

<form name="contact-form" method="post" id="contact-form"> 

         <h3> We want to hear from you! Tell us about your business and/or project and what you need and we'll get back to you as soon as possible! </h3> 

          <div class="form-group"> 

           <label for="name">Your Name:</label> 
           <input type="text" name="name" class="form-control" placeholder="Your Name" required/> 

          </div> 

          <div class="form-group"> 

           <label for="email">Your Email:</label> 
           <input type="email" name="email" class="form-control" placeholder="Your Name" required/> 

          </div> 
          <div class="form-group"> 

           <label for="web">Current Website (if available):</label> 
           <input type="text" name="website" class="form-control" placeholder="Current Website (if available)"/> 

          </div> 

          <div class="form-group"> 

           <label for="web">Business Name (if available):</label> 
           <input type="text" name="business" class="form-control" placeholder="Business Name (if available)"/> 

          </div> 

          <div class="form-group"> 

           <label for="comment">Message:</label> 
           <textarea id="textarea" rows="5" class="form-control" name="textarea" placeholder="Message"></textarea> 

          </div> 

          <div class="row" align="center" id="button-row2"> 

           <input type="button" value="Submit" onClick="ajax.send()" class="btn"> 

          </div> 

        </form> 

任意のアイデア?

+0

あなたはAJAXコード(テストと生きる)の両方の場合で同じページのURLをHTMLフォームとして提出し始める形ではなく、実行されていることを確認することができますそれはどこにありますか? – fvgs

+0

また、 'name、email、textareaなどの変数がライブ環境で送信される前に設定されているかどうかを確認できますか? – fvgs

+0

@fvgs AJAXが実行されていることを確認するには、$ .postの後にdata == trueの場合はelseを返します。これは、私が推測していることは、それが最初にそれを通過したことを意味します。各変数の値を入力しましたが、どのように確認できますか? –

答えて

0

jQueryは実際の環境では正しくアクセスできません。したがって、

var name = $("input[name=name]").val(); 
var email = $("input[name=email]").val(); 
var textarea = $("textarea").val(); 
var business = $("input[name=business]").val(); 
var website = $("input[name=website]").val(); 

はすべてがundefined

+0

どうすれば修正できますか? –

+0

これはただの理論です。これは私の上記のコメントのいずれかで説明されているような場合であるかどうかを確認する必要があります。 – fvgs

+0

これでPHPの 'if(count($ _ POST)> 0)'前にPHPですべての値を表示しました。また、ローカルでは完全に動作します。しかし、実際には 'if(count($ _ POST)> 0)'に近づいたときのように、 –

関連する問題