2009-05-02 14 views
0

Unten ist mein Code, den ich versuche, "Benutzername Ok" im Respone-Text zu finden, und dann UserNameOk als wahr zu kennzeichnen. Ich kann das nicht funktionieren.Suche nach String in 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); 

} 

Unten ist mein checkCanSubmit Code

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

Jede Hilfe Dank geschätzt wird.

Antwort

1

Nur eine Vermutung: Die Antwort könnte etwas wie "Benutzername Ok \ n" sein (das '\ n' ist ein Newline-Zeichen, das Sie nicht sehen können). Oder es könnte Whitespace am Anfang oder am Ende haben. Sie könnten die Länge der Zeichenfolge ausdrucken (Alarm), um das zu testen.

+0

Ich habe gerade die Länge (httpxml.responseText.length) überprüft und es sagt seine 40? Ich habe auch gerade die Antwort alarmiert und überprüft sein "Benutzername Ok", die es ist – Elliott

+0

Gut 40 ist viel zu lang, es muss einige Zeichen geben, die Sie nicht sehen. Eine schnelle Lösung für Sie könnte sein: 'if (httpxml.responseText.indexOf (" Benutzername Ok ")> = 0)' Aber wenn Sie wirklich herausfinden wollen, was diese unsichtbaren Zeichen sind, könnten Sie versuchen: ' alert (escape (httpxml.responseText)); ' Ich frage mich, ob es so etwas wie" Benutzername Ok "(37 Zeichen) sein wird. alert() blendet die Tags wahrscheinlich aus. ;) – joeytwiddle

+0

Danke ich benutzt (httpxml.responseText.indexOf ("Benutzername Ok")> = 0) Scheint zu arbeiten :) – Elliott

0

Sie sehen die richtige Antwort durch Firebug kommen?

Der erste Schritt besteht darin, sicherzustellen, dass der Server die richtige Antwort zurückgibt, indem er Firebug betrachtet. Ich könnte auch den Code vereinfachen, um die Probleme einzugrenzen. Versuchen Sie:

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); 

Können Sie genauer sein, wo das Problem liegt?

+0

Yeh ich nein die richtige Antwort kommt durch, weil ich die Antwort von dieser Zeile sehen: document.getElementById ("user_div"). InnerHTML = httpxml.responseText; Das funktioniert gut. Mein Problem ist, dass der ResponseText als "Benutzername OK" angezeigt wird, aber nicht als wahr markiert ist. – Elliott

+0

Ich habe gerade oben getestet und ich bekomme die Warnung zwei. Obwohl ich den responseText überprüft habe und es gleich ist Benutzername Ok – Elliott

+0

ja vielleicht müssen Sie die Antwort strippen. tatsächlich Alarm werfen (httpxml.responseText); direkt vor der if-Anweisung und sehen, was es druckt – Tony