AJAX无法从PHP读取echo数据

AJAX cannot read echo data from PHP?

本文关键字:读取 echo 数据 PHP AJAX      更新时间:2023-09-26

我一直在测试我的寄存器,在一定程度上代码是有效的。但它似乎无法比较PHP脚本中的文本。

我尝试使用现有的电子邮件和用户名,现有的电子邮件,现有的用户名和两个不存在的用户名和电子邮件。但所有这些都给了我回显的数据+Fail(这是JQuery中的结束条件语句)。

JQuery:

$( function ajaxRegCheck() {
    $('#reg_form').submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: 'save_register.php',
            data: $(this).serialize(),
            success: function(data)
            {
                if(data == "un_em_exists"){
                    alert(data+" Username and Email exists.");
                } else if(data == "un_exists") {
                    alert(data+" Username exists.");
                } else if(data == "em_exists") {
                    alert(data+" Email exists.");
                } else if(data == "success"){
                    alert(data+" Created account.");
                } else {
                    alert(data+ " Fail.");
                }
            } 
        });
    });
});

PHP注册:

if(($exist_check_user->rowCount() > 0) AND ($exist_check_em->rowCount() > 0)){
    echo "un_em_exists";
} else if($exist_check_user->rowCount() > 0) {
    echo "un_exists";
} else if($exist_check_em->rowCount() > 0) {
    echo "em_exists";
} else {
    $sql = "INSERT INTO Users (username, email, password) VALUES (:r_un, :r_em, :r_pw)";
    $q = $cdb->prepare($sql);
    $q->execute(array(':r_un'=>$reg_username,':r_em'=>$reg_email,':r_pw'=>$reg_pw));
    echo "success";
}

我不知道为什么它跳过JQuery中的if语句,直接进入最后一个else条件。它清楚地正确地输出了PHP端的字符串,但似乎无法比较字符串?

例如,如果我使用现有用户名和电子邮件进行注册,它将回复"un_em_exists"响应。在JQuery上,警报与此匹配,因为它显示"un_em_exists Fail.",这是最后一条语句。

更新:

发现了问题,但不太确定如何解决。我测试了字符串长度,作为回报,我得到了字符串长度16(从JQuery端测试),在PHP上得到了12——这是"un_em_exists"的正确数量。

不过,我不知道额外的4笔钱是从哪里来的。

使用data.trim()成功修剪数据后,可能会出现空白

确保返回的值是这样的文本:

$( function ajaxRegCheck() {
    $('#reg_form').submit(function(e) {
        e.preventDefault();
        $.ajax({
            dataType: 'text',
            type: "POST",
            url: 'save_register.php',
            data: $(this).serialize(),
            success: function(data)
            {
                if(data == "un_em_exists"){
                    alert(data+" Username and Email exists.");
                } else if(data == "un_exists") {
                    alert(data+" Username exists.");
                } else if(data == "em_exists") {
                    alert(data+" Email exists.");
                } else if(data == "success"){
                    alert(data+" Created account.");
                } else {
                    alert(data+ " Fail.");
                }
            } 
        });
    });
});