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

如何通过AJAX从PHP文件中获取返回数据?,php,jquery,ajax,Php,Jquery,Ajax,我正在尝试用PHP和AJAX制作一个联系人表单。电子邮件发送,但它总是说“发送失败!”,即使在控制台中,它说“true”,这将导致html“发送消息!” 因此,我在PHP脚本的末尾写了以下内容: if (!$mail->send()) { echo $mail->ErrorInfo; } else { echo "true"; } 这意味着通过AJAX,我得到的输出数据应该是其中之一,对吗 ajax.S

我正在尝试用PHP和AJAX制作一个联系人表单。电子邮件发送,但它总是说
“发送失败!”
,即使在控制台中,它说
“true”
,这将导致html
“发送消息!”

因此,我在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”,这样我就可以将适当的信息放在页面上,如“消息已发送!”但在这种情况下,无论发送失败还是成功,它都不会返回true。我也尝试过,在php文件中,
print\r(“true”)
die(“true”)
但仍然不起作用。有人知道为什么吗?任何事情都将不胜感激,谢谢。

看起来系统将
“true”
作为关键字。试着把
OK
之类的东西放进去。还要检查是否没有输出额外的行。您可以通过检查
.trim()
来完成此操作

要检查此类问题,请使用
encodeURI()
函数在控制台上尝试:

console.log(encodeURI(data));
这可能会给您提供类似的信息:

我在输出上创建了一个输入行。如果您选择以下选项,则可能不匹配:

data == "true"
因此,您可能需要在此处使用
trim()
函数。有关更多信息,请参阅以下内容:


我坚信情况会是这样<代码>:)

看起来系统将
“true”
作为关键字。试着把
OK
之类的东西放进去。还要检查是否没有输出额外的行。您可以通过检查
.trim()
来完成此操作

要检查此类问题,请使用
encodeURI()
函数在控制台上尝试:

console.log(encodeURI(data));
这可能会给您提供类似的信息:

我在输出上创建了一个输入行。如果您选择以下选项,则可能不匹配:

data == "true"
因此,您可能需要在此处使用
trim()
函数。有关更多信息,请参阅以下内容:


我坚信情况会是这样<代码>:)

我原以为这样也行,但同样的事情发生了。在控制台上它说的是真的,所以我很失落。控制台说的是真的吗?您是否执行了
console.log(encodeURI(data))?这个输出是什么?我发现了问题!因此,在脚本(我使用PHPMailer)中,我有一行代码“$mail->SMTPDebug=2”;一旦我删除它,它就可以完美地工作。谢谢我想这也行,但同样的事情发生了。在控制台上它说的是真的,所以我很失落。控制台说的是真的吗?您是否执行了
console.log(encodeURI(data))?这个输出是什么?我发现了问题!因此,在脚本(我使用PHPMailer)中,我有一行代码“$mail->SMTPDebug=2”;一旦我删除它,它就可以完美地工作。谢谢