2017-01-16 6 views
6

これは重複しているかもしれませんが、私は検索して検索しました。同じ構文で同じ問題を経験している人が見つからないので、私は行方不明です。 PHPは私の強い訴訟ではありませんが、私はいくつかのチュートリアルやクラスを経て、改善しようと努力しました。これが私をそんなに悩ませています。私はPHPを使用して電子メールに送信しようとしている非常にシンプルなHTMLフォームがあります。私はこれまで私が使い慣れていたものからこれを実行する別の方法を見つけ出し、それにショットを付けたいと思っていました。私が間違っていないと、関数が起動するたびにすべてが機能しているように見えます(私はconsole.logでテストしました。警告が表示され、ポップアップが表示されるので、PHPファイルで "成功"が働いています)。私の問題の結果生じる問題は、フォームから電子メールを受け取ったことがないということです(私はこの質問をするためにダミーの電子メールを入れました)。電子メールを送信するフォームを取得することはできません

私はフォームアクション= .php "またはフォームから直接呼び出される関数呼び出しですが、このメソッドから理解できることは、すべてが送信時に発生するということです。また、すべてが機能しているように見えますが、電子メールの場合はどうなるか分かりません。

経験豊かな人が私が見逃しているものを見つけることができるかどうかを知りたいです。ホスティングプロバイダは問題があればゴダディです。誰もが提供することができます。

var contactForm = $("#main-contact-form"); 
    contactForm.submit(function(event) { 
     event.preventDefault(); 
     submitForm();   
    }); 
    function submitForm() { 
     var firstName = $("#first-name"); 
     var lastName = $("#last-name"); 
     var email = $("#email"); 
     var phone = $("#phone"); 
     var company = $("#company"); 
     var contactType = $("#contact-type"); 
     var message = $("#message"); 

     $.ajax({ 
      type: "POST", 
      url: "php/main-contact-form.php", 
      data: "firstName=" + firstName + "&lastName" + lastName + "&email" + email + "&phone" + phone + "&company" + company + "&contactType" + contactType + "&message" + message, 
      success: function(text) { 
       if (text == "success"){ 
        formSuccess(); 
       } 
      } 
     });   
    } 
    var contactSuccess = $(".contact-submission-success") 
    function formSuccess(){ 
     contactSuccess.addClass("show", 200); 
    } 
});  

はここに私のPHPコードです:

<form class="main-contact-form" id="main-contact-form"> 
      <div class="row"> 
       <div class="col-md-6"> 
        <input id="first-name" name="firstName" type="text" placeholder="First Name (Required)" onfocus="this.placeholder = ''" onblur="this.placeholder = 'First Name (Required)'" /> 
       </div> 
       <div class="col-md-6"> 
        <input id="last-name" name="lastName" type="text" placeholder="Last Name (Required)" onfocus="this.placeholder= ''" onblur="this.placeholder= 'Last Name (Required)'" /> 
       </div> 
       <div class="col-md-6"> 
        <input id="email" name="email" type="email" placeholder="Email (Required)" onfocus="this.placeholder= ''" onblur= "this.placeholder= 'Email (Required)'" /> 
       </div> 
       <div class="col-md-6"> 
        <input id="phone" name="phone" type="phone" placeholder= "Phone Number" onfocus= "this.placeholder= ''" onblur="this.placeholder= 'Phone Number'" /> 
       </div> 
       <div class="col-md-6"> 
        <input id="company" name="company" type="text" placeholder="Company" onfocus="this.placeholder= ''" onblur= "this.placeholder= 'Company'" /> 
       </div> 
       <div class="col-md-6"> 
        <select id="contact-type" name="contactType"> 
         <option value="" selected>I'd like to...</option> 
         <option class="contact-option" value="Contact sales">Contact sales</option> 
         <option value="Get a quote">Get a quote</option> 
         <option value="Contact customer service">Contact customer service</option> 
        </select> 
       </div> 
       <div class="col-12"> 
        <textarea id="message" placeholder="What can we do for you?" onfocus="this.placeholder= ''" onblur="this.placeholder= 'What can we do for you?'" /></textarea> 
       </div> 
       <div class="col-md-6 push-md-3"> 
        <button type="submit">Submit</button> 
       </div> 
      </div> 
     </form> 

はここに私のJSコードです:

はここに私のhtmlです(ページが.phpの拡張子である)

<?php 
$firstName = $_POST["firstName"]; 
$lastName = $_POST["lastName"]; 
$email = $_POST["email"]; 
$phone = $_POST["phone"]; 
$company = $_POST["company"]; 
$contactType = $_POST["contactType"]; 
$message = $_POST["message"]; 

$EmailTo = "[email protected]"; 
$subject = "New Contact Form Message Received"; 

$Body .= "First Name: "; 
$Body .= $firstName; 
$Body .= "\n"; 

$Body .= "Last Name: "; 
$Body .= $lastName; 
$Body .= "\n"; 

$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 

$Body .= "Phone: "; 
$Body .= $phone; 
$Body .= "\n"; 

$Body .= "Company: "; 
$Body .= $company; 
$Body .= "\n"; 

$Body .= "Contact Type: "; 
$Body .= $contactType; 
$Body .= "\n"; 

$Body .= "Message: "; 
$Body .= $message; 
$Body .= "\n"; 

$success = mail($EmailTo, $Subject, $Body, "From:".$email); 

if ($success) { 
    echo "success"; 
} else { 
    echo "invalid"; 
} 

?> 
+0

everthingsが正しいようです。メールはsmtpサーバーのためにローカルに送信されませんあなたのコードを展開し、メールを送信するオンラインで実行しようとします。 –

+4

メールを使ってwoudを停止する(phpmailerを参照) – nogad

+0

私はメールを「ジャストワーク」していないが、他の人はhttp://php.net/manual/en/function.mail.php#118210をチェックしている – Joe

答えて

5

まあ、あなたの問題はここにあると思います:

function submitForm() { 
    var firstName = $("#first-name"); 
    var lastName = $("#last-name"); 
    var email = $("#email"); 
    var phone = $("#phone"); 
    var company = $("#company"); 
    var contactType = $("#contact-type"); 
    var message = $("#message"); 

    $.ajax({ 
     type: "POST", 
     url: "php/main-contact-form.php", 
     data: "firstName=" + firstName + "&lastName" + lastName + "&email" + email + "&phone" + phone + "&company" + company + "&contactType" + contactType + "&message" + message, 
     success: function(text) { 
      if (text == "success"){ 
       formSuccess(); 
      } 
     } 
    });   
} 

入力自体ではなく、入力値を取得する必要があります。たとえば、これを行う場合:

var miValue = $("#first-name"); 

あなたは値ではなく、dom要素を取得しています。値を取得するには、Val関数を呼び出す必要があります。

var miValue = $("#first-name").val(); 

そして、あなたの関数は次のようになります。

function submitForm() { 
    var firstName = $("#first-name").val(); //Call the val() function 
    var lastName = $("#last-name").val(); 
    var email = $("#email").val(); 
    var phone = $("#phone").val(); 
    var company = $("#company").val(); 
    var contactType = $("#contact-type").val(); 
    var message = $("#message").val(); 

    $.ajax({ 
     type: "POST", 
     url: "php/main-contact-form.php", 
     data: "firstName=" + firstName + "&lastName" + lastName + "&email" + email + "&phone" + phone + "&company" + company + "&contactType" + contactType + "&message" + message, 
     success: function(text) { 
      if (text == "success"){ 
       formSuccess(); 
      } 
     } 
    });   
} 

あなたがここにvalの詳細を読むことができます:val() jQuery

+0

'data:{firstName:firstName、lastName:lastName、...}' – Phil

+2

...またはdata:contactFormのように、文字列の代わりに 'data'オブジェクトを使うことをお勧めします。serialize() ' – Phil

+0

PhilとLuisは、残念ながらまだメールはありません。私はそれを認識していませんでしたが、私が使っていた例は.val()でした。私はちょうどそれを試してみることを急いでいました。うまくいきませんでしたが、間違いなくあなたの推奨事項に合っていました。 「正しいメールを使う」と言った人には、私はここに投稿したくありませんでした。しかし、ありがとう。 nogadが推奨するphpmailerをダウンロードしました。そのショットを与えるつもりです。誰も助けようとしてくれてありがとう。 – PhilT41

0

私は思います問題はあなたの電子メールからです。それは有効なものですか?投稿する必要はありません。PHPコードでハードコードするか、設定値を使ってよりうまくコードを書いてください。

+0

これは、おそらく解答よりもコメントとしてうまくいくでしょう。 –

関連する問題