2010-11-23 9 views
0

Dies ist mein Code:javascript: seltsame Verhalten von == für Strings

$.ajax({ 
    type: "POST", 
    url: "/myURL", 
    success: function(msg){ 
     alert(msg); 
     // aler prints success, but msg != "success" ???? 
     if (msg == "success") { 
      //my code 
     } else { 
      //other code 
     } 
    } 
}); 

Etwas weired geschieht: die Warnung Dialog druckt Erfolg, aber msg = "Erfolg". Was vermisse ich? Meine PHP-Methode gibt nur "Erfolg" oder "Fehler" basierend auf einer Aktion zurück.

+7

Ist es möglich, dass die Ausgabe von '/ myUrl' erfolgreich mit führenden oder nachgestellten Leerstellen zurückkehrt? –

Antwort

1

dies vor conditionals setzen:

msg= jQuery.trim(msg).toLowerCase(); 

von Ihrem Code Angenommen, du bist JQuery mit

0

Der Text kann weiß sein.

Ich kann vorschlagen, dass für eine robuste Möglichkeit, dies zu beheben, Daten in einem bestimmten Format wie JSON zurückgeben.

dataType:'json' 

auf Ihre $ .ajax Konfiguration hinzufügen und haben die PHP-Ausgabe

header('Content-Type: application/json'); 
echo json_encode(array('msg'=>'success')); 

oder 'msg'=>'failure' für die andere Möglichkeit, natürlich.

Dann in der JS,

success: function(data){ 
    alert(data.msg); 
    if (data.msg == "success") { 
     //my code 
    } else { 
     //other code 
    } 
1

Versuchen:

if (msg.trim().toLowerCase() == "success") 
{...} 

Sie müssen möglicherweise pr ototype eine trim Methode, wenn es nicht über den Browser unterstützt wird.

1

Einfach, Sie können === für den Vergleich verwenden. Kann es nützlich sein.