나는 내 등록기를 테스트 해왔고 어느 정도까지는 코드가 작동합니다. 하지만 그것은 PHP 스크립트의 텍스트를 비교할 수없는 것 같습니다.AJAX는 PHP에서 에코 데이터를 읽을 수 없습니까?
기존 이메일과 사용자 이름, 기존 이메일, 기존 사용자 이름 및 존재하지 않는 두 개의 사용자 이름과 이메일을 사용해 보았습니다. 그러나 모두 내게 에코 된 데이터 + 실패 (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 등록 : 나는 JQuery와의 경우 명령문을 건너 뛰고 마지막으로 다른 상태로 바로 이동하지 왜
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";
}
. 그것은 명확하게 PHP 쪽에서 문자열을 올바르게 출력하지만 문자열을 비교할 수없는 것 같습니다?
예를 들어, 기존 사용자 이름과 이메일에 등록하면 'un_em_exists'응답이 표시됩니다. JQuery에서이 경고는 "un_em_exists Fail."과 일치하며 마지막 문입니다.
UPDATE :
문제를 발견하지만, 해결하는 방법 너무 확실하지 않다. 나는 문자열 길이를 테스트하고 반환 값으로 문자열 길이 16 (JQuery 측에서 테스트)을 얻었고 PHP에서는 12를 얻는다. 이것은 "un_em_exists"에 대한 정확한 값이다.
나는 여분의 4 가지 금액이 무엇으로부터 왔는지 모르겠다.
당신이 문자열 길이를 확인 했 공백이있다? 여분의 새로운 행이나 다른 공백이있을 수 있습니다. – johannes
PHP로 코드를 보내고 문자열 값을 클라이언트 측으로 변환하는 것이 더 쉬울 것입니다. – T00rk
Ajax 호출 중에 반환되는'data' 데이터 유형을 검사하면 String이 아닌 객체를 가져올 수 있습니다. 그러면 String 비교가 모두 false가됩니다. – Vigs