2016-09-18 94 views
0

我想用PHP和AJAX做一個聯繫表單。電子郵件發送和所有,但它總是說"Failed to send!"即使在控制檯它說"true"這將導致在HTML "Message Sent!"如何通過AJAX從PHP文件獲取返回數據?

所以我在我的PHP腳本的末尾寫道的:

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; 
       }); 

這是jQuery的^

所以基本上,如果電子郵件發送我想要的回報是「真實的」這樣的話我可以把網頁上像「消息發送此時,相應的信息! 「但在這種情況下,無論發送失敗還是失敗,它都不會返回true。我也嘗試過,在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;」一旦我將它移除,它就完美無缺地工作。謝謝! –

相關問題