[英]AJAX cannot read echo data from PHP?
我一直在測試我的寄存器,並且在某種程度上可以工作。 但是它似乎無法比較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.");
}
}
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.