2009-05-02 8 views
0

아래 코드는 respone 텍스트에서 'Username Ok'을 찾은 다음 UserNameOk를 true로 플래그 지정하려고합니다. 나는이 일을 할 수 없다.httpxml.responseText에서 문자열 찾기

function check_username(username) 
{ 
    var httpRequest; 
    make_request() 
    function stateck() 
    { 

     if(httpxml.readyState==4) 

     { 
      if (httpxml.responseText == "Username Ok") 
      { 
       UserNameOk = true; 

      } 
      else 
      { 
       UserNameOk = false; 
      } 
     checkCanSubmit(); 
     document.getElementById("user_div").innerHTML=httpxml.responseText; 
     } 
    } 

    httpxml.onreadystatechange=stateck; 
    user_url="ajax_username.php?username=" + username.value; 
    httpxml.open("GET",user_url,true); 
    httpxml.send(null); 

} 

다음은 어떤 도움이 감사를 이해할 수있을 것이다 내 checkCanSubmit 코드

function checkCanSubmit() 
{ 
    if (UserNameOk && PasswordOk && EmailOk) 
    { 
    document.getElementById("button").disabled= false; 
    } 
    else 
    { 
    document.getElementById("button").disabled= true; 
    } 
    } 

입니다.

답변

1

"Username Ok \ n"(사용자가 볼 수없는 개행 문자 인 '\ n')과 같은 응답 일 수 있습니다. 또는 처음이나 끝에 공백이있을 수 있습니다. 테스트하기 위해 문자열의 길이를 출력 (경고) 할 수 있습니다.

+0

방금 ​​길이 (httpxml.responseText.length)를 확인했으며 40이라고 말했습니까? 나는 또한 방금 응답을 경고하고 그 "Username Ok"을 확인했습니다. – Elliott

+0

글쎄요. 글쎄요. 40 글자가 너무 길어서, 보지 못하는 성격이 틀림 없습니다. '(httpxml.responseText.indexOf ("Username Ok")> = 0)' 하지만 실제로 보이지 않는 문자가 무엇인지 알아 보려면 다음을 시도해보십시오.' " 사용자 이름 Ok"(37 자)와 같은 형식인지 궁금합니다. alert()는 태그를 숨 깁니다. ;) – joeytwiddle

+0

감사합니다. (httpxml.responseText.indexOf ("Username Ok")> = 0) 작동하는 것 같습니다 :) – Elliott

0

방화 광명을 통해 정확한 응답이 표시됩니까?

첫 번째 단계는 방화 광 시계를보고 서버가 올바른 응답을 반환하는지 확인하는 것입니다. 또한 코드를 단순화하여 문제의 범위를 좁히는 데 도움이 될 수 있습니다. 시도해보십시오.

function check_username(username) 
{ 
    var httpRequest; 
    make_request() 
    function stateck() 
    { 

      if(httpxml.readyState==4) 

      { 
        if (httpxml.responseText == "Username Ok") 
        { 
          alert('1'); 
          UserNameOk = true; 

        } 
        else 
        { 
          alert('2'); 
          UserNameOk = false; 
        } 
      } 
    } 

    httpxml.onreadystatechange=stateck; 
    user_url="ajax_username.php?username=" + username.value; 
    httpxml.open("GET",user_url,true); 
    httpxml.send(null); 

문제의 위치에 대해 자세히 설명해 주실 수 있습니까?

+0

예 아니요.이 줄의 응답을 볼 수 있기 때문에 올바른 응답이 나오지 않습니다. document.getElementById ("user_div"). innerHTML = httpxml.responseText; 잘 작동합니다. 내 문제는 responseText가 "사용자 이름 확인"으로 표시되지만 실제로는 플래그가 지정되지 않는다는 것입니다. – Elliott

+0

나는 위의 테스트를 한 결과 두 가지 경고 메시지가 나타납니다. responseText를 확인했지만 사용자 이름과 동일합니까 Ok – Elliott

+0

아마도 응답을 제거해야합니다. 실제로 경고를 던지십시오 (httpxml.responseText); if 문 바로 앞에서 인쇄 내용을 확인하십시오. – Tony