2011-12-11 63 views
0

下午好,如何讓我的AJAX電子郵件在Wordpress上工作

我有一個非常令人沮喪的問題。我目前正在嘗試使用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; 
    } 
} 

有問題的網頁是http://lunaskymoda.co.uk/contact-us/

Ps,如果它說「消息發送」並不一定意味着它發送..仍然在這方面的工作。

+0

這是jQuery - 你在調用標籤中的jQuery庫嗎?在控制檯中看到什麼錯誤? – themerlinproject

回答

2

好吧,你去了很多不同的東西。首先,這是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) 

這可以是一個),因爲您的JS從第二個錯誤斷裂或b),因爲你還有HTML表單操作,當你正在使用jQuery來處理表單。所以:

四,您的表單標籤從:

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

以下幾點:

<form id="emailform"> 

這一切都應該讓你在正確的軌道上。當您在控制檯中查找錯誤時,故障排除JS變得容易得多。在鉻只需右鍵單擊任何地方,然後單擊「檢查元素」,然後單擊「控制檯」。在FireFox中下載'螢火蟲'添加。在沒有控制檯的情況下排除JS就像在黑暗中工作。

相關問題