2016-09-18 18 views
0

私はPHPとAJAXで連絡フォームを作ろうとしています。電子メールが送信され、すべてが、それは常にそれがAJAX経由でPHPファイルからデータを返す方法は?

"Message Sent!"は、だから私は私のPHPスクリプトの最後でこれを書いたHTMLをもたらすべきである"true"言っても、コンソールに"Failed to send!"を言う:

if (!$mail->send()) { 
     echo $mail->ErrorInfo; 
    } else { 
     echo "true";  
} 

、それはすべきAJAX経由で取得した出力データが正しいものであることを意味していますか?

   ajax.SetText("Sending..."); 
       $.post("sendmail.php", { 
        name: userName, email: userEmail, comments: userComments, business: currentBusiness, website: currentWebsite 
       }, function(data) { 
        if(data == "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; 
       }); 

これには、基本的には、電子メールメッセージが送信された」のようなので、私はページ上のappropiate情報を置くことができ、私はリターンが「真」になりたい送信された場合はjQueryの^

です! "しかし、この場合、送信に失敗しても成功したとしても、それは真実を返すことはありません。私はまた、PHPファイルでprint_r("true")die("true")を試しましたが、まだ動作しません。なぜ誰が知っていますか?どんなことにも感謝します。

答えて

2

システムが"true"をキーワードとみなしているようです。 OKなどを入れてみてください。また、余分な行を出力していないかどうか確認してください。これは.trim()でチェックすることで可能です。

if (data.trim() == "true") { 

encodeURI()機能を使用して、コンソールにしてみてください、問題のような種類を確認するには:

console.log(encodeURI(data)); 

これはあなたに似た何か与えるかもしれない:

console

を私はを作成しました出力に行を入力します。

data == "true" 

だからあなたがここにtrim()機能を使用する必要があります:あなたが確認した場合にこれが一致しない場合があります。詳細については、下記を見てください:

console

私は強く、こうであると考えています。 :)

+0

私はそれもうまくいくと思いましたが、同じことが起こります。そして、コンソールでそれは本当だと私は非常に失われていると言う –

+0

コンソールは本当ですか?あなたは 'console.log(encodeURI(data));をしましたか?これの出力は何ですか? –

+1

問題が見つかりました!だからスクリプト(私はPHPMailerを使用して)私はこの行のコード "$ mail-> SMTPDebug = 2;"私がそれを取り除くとすぐに、それは完璧に働いた。ありがとう! –

関連する問題