2016-09-18 74 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;”一旦我将它移除,它就完美无缺地工作。谢谢! –

相关问题