如何通过AJAX从PHP文件中获取返回数据?

时间:2016-09-18 00:30:21

标签: php jquery ajax

我正在尝试使用PHP和AJAX创建联系表单。电子邮件会发送,但所有内容都会显示"Failed to send!",即使在控制台中显示"true"也会导致html "Message Sent!"

所以我在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"),但它仍然无效。有谁知道为什么?任何事情都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

系统看起来正在将"true"作为关键字。尝试放OK或其他东西。还要检查你是否输出了额外的一行。您可以通过.trim()确认。

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

要检查此类问题,请使用encodeURI()功能

尝试使用控制台
console.log(encodeURI(data));

这可能会给你类似的东西:

console

我在输出上创建了一个 Enter 行。如果您选中以下内容,则可能不匹配:

data == "true"

所以你可能需要在这里使用trim()函数。请查看以下内容以获取更多信息:

console

我坚信会出现这种情况。 :)