2011-12-11 4 views
0

良い午後、WordpressでAJAXの電子メールを受信するにはどうすればいいですか

私は非常に不満な問題があります。私は現在、AJAX関数を使用してWordpressサイトの連絡フォームから電子メールを送信しようとしています。フィールドがいっぱいになっていないときだけメールを送信しますが、フォームフィールド内でデータを送信しようとすると、電子メールは送信されません。

また、何らかの理由でWordpress環境の外部から実行しているときに動作するようですが、Wordpressテンプレートファイルに含めた時点から問題が発生し始めます。

以下は私のコードです。これはJavascriptで

 $(document).ready(function(){ 
     $('#emailform').submit(function(){ 

      window.open('','',"width=500,height=150").document.write("Thank you for contacting us, we will reply you shortly. Thank you!"); 

      // getting all the stuff from the form 
      var form = $(this), 
      formData = form.serialize(), 
      formUrl = form.attr('action'), 
      formMethod = form.attr('method'), 
      emailresponse = $('#emailresponse'); 

      // loading stuff 
      emailresponse.fadeOut(200, function(){ 
       $(this).text("Message sent") 
       .fadeIn(200) 
      }); 


      // sending stuff to the server 
      $.ajax({ 
       url: formUrl, 
       type: formMethod, 
       data: formData, 
       success:function(data) { 
        //stuff to do when the ajax call is successful and complete 

        var responseData = $.parseJSON(data), 
         klass = ''; 

        emailresponse.fadeOut(200, function(){ 
         $(this).text(responseData.message) 
         .fadeIn(200); 
        }); 

       } 
      }) 


      return false; 
     }) 
    }) 

、これが問題になっているPHP

if (isset($_GET['action'])) { 

    if($_GET['action'] == 'email') { 
     $name = $_POST['name']; 
     $email = mysql_real_escape_string($_POST['email']); 
     $message = $_POST['message']; 

     $m1 = "Name of customer: " . $name . "\n"; 
     $m2 = "Customer's Email: " . $email . "\n"; 
     $m3 = "Message: " . $message; 
     $emailmessage = $m1 . $m2 . $m3; 

     mail('[email protected]', 'Message from LUNASKYMODA.CO.UK contact page', $emailmessage); 

     $data = array( 
       'status' => $status, 
       'message' => $message 
      ); 

     echo json_encode($data); 

    exit; 
    } 
} 

Webページで、現時点では任意のエラーやスパム取り扱いがないという事実を許しhttp://lunaskymoda.co.uk/contact-us/

Ps「メッセージが送信されました」とは必ずしも送信されるわけではありません。

+0

これはjQueryです - あなたはタグでjQueryライブラリを呼び出していますか?コンソールではどのようなエラーが表示されますか? – themerlinproject

答えて

2

[OK]を、あなたが起こって異なるものをたくさん持っています。まず、これはjQueryコード(javascriptライブラリ)で、コードにはセミコロンがありません。これを試してみてください:

$(document).ready(function(){ 
     $('#emailform').submit(function(){ 

      window.open('','',"width=500,height=150").document.write("Thank you for contacting us, we will reply you shortly. Thank you!"); 

      // getting all the stuff from the form 
      var form = $(this); 
      formData = form.serialize(); 
      formUrl = form.attr('action'); 
      formMethod = form.attr('method'); 
      emailresponse = $('#emailresponse'); 

      // loading stuff 
      emailresponse.fadeOut(200, function(){ 
       $(this).text("Message sent") 
       .fadeIn(200); 
      }); 


      // sending stuff to the server 
      $.ajax({ 
       url: formUrl, 
       type: formMethod, 
       data: formData, 
       success:function(data) { 
        //stuff to do when the ajax call is successful and complete 

        var responseData = $.parseJSON(data); 
        // klass = ''; <--what is this? you don't define 'klass' anywhere 

        emailresponse.fadeOut(200, function(){ 
         $(this).text(responseData.message) 
         .fadeIn(200); 
        }); 

       } 
      }); 


      return false; 
     }); 
    }); 

第二に、できるだけ早く私はあなたのサイトをプルアップとして、私は、コンソールにこのエラーが表示されます。

Uncaught TypeError: Object [object Object] has no method 'livequery' wp-e-commerce.js:273 

あなたもスクリプトを提出する前に、だからあなたのサイトには、JavaScriptのエラーがあります。すべてのエラーをクリアしてください。チェーン内でエラーが発生している場合は、javascriptにはエラーが発生しています。私は、フォームを送信する際

第三に、私はこのエラーを取得する:

POST http://lunaskymoda.co.uk/contact-us/?action=email 404 (Not Found) 

この可能性もどちらかa)は、あなたのJSは、2番目のエラーから壊れたりしているため、B)あなたはまだHTMLフォームアクション時にあなたを持っているので、 jQueryを使用してフォームを処理しています。だから、次へ

<form id="emailform" action="?action=email" method="post" accept-charset="utf-8" novalidate="novalidate"> 

第四に、このことからフォームのタグを変更

<form id="emailform"> 

すべてこれは正しい軌道に乗ってあなたを取得する必要があります。コンソールのエラーを調べると、JSのトラブルシューティングが非常に簡単になります。クロムで右クリックして "inspect element"をクリックし、 "console"をクリックしてください。 FireFoxで、 'firebug'アドオンをダウンロードしてください。コンソールのないJSのトラブルシューティングは、暗闇の中での作業のようなものです。