2014-09-17 3 views
1

나는 내 등록기를 테스트 해왔고 어느 정도까지는 코드가 작동합니다. 하지만 그것은 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 가지 금액이 무엇으로부터 왔는지 모르겠다.

+0

당신이 문자열 길이를 확인 했 공백이있다? 여분의 새로운 행이나 다른 공백이있을 수 있습니다. – johannes

+0

PHP로 코드를 보내고 문자열 값을 클라이언트 측으로 변환하는 것이 더 쉬울 것입니다. – T00rk

+0

Ajax 호출 중에 반환되는'data' 데이터 유형을 검사하면 String이 아닌 객체를 가져올 수 있습니다. 그러면 String 비교가 모두 false가됩니다. – Vigs

답변

1

이 (data.trim 사용하여 데이터를 트림), 수 있습니다

+0

감사합니다. 나는 육안으로 볼 때 평등하게 보였으므로 이것이 대답이 될 것이라고 생각하지 않았습니다. 하지만 두 문자열 길이를 모두 테스트 한 후에는 12 자 대신 16자를 산출하는 문제가 있다는 것을 깨달았습니다. 나는 여분의 4 문자가 어디에서 왔는지 모르겠다. – Martynogea

0

있는지 확인 반환 값은 텍스트과 같이이다 : 성공 후

$(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."); 
       } 
      } 
     }); 
    }); 
}); 
+0

출구에 대한 주석과 함께이 내용을 추가했습니다. 여전히 같은 행동. – Martynogea

관련 문제