2010-11-23 14 views
0

これは私のコードです:javascript:文字列の==の奇妙な動作

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

何か起きたことが起こりました:アラートダイアログは成功ですが、msg!= "成功"と表示されます。私は何が欠けていますか? 私のPHPメソッドは、単に何らかのアクションに基づいて「成功」または「失敗」を返します。

+7

'/ myUrl'の出力が、先頭または末尾の空白で成功を返す可能性はありますか? –

答えて

1

は、条件文の前にこれを置く:

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

あなたはjQueryの

を使用しているあなたのコードで仮定し
0

テキストの周囲に空白がある可能性があります。

これを修正する堅牢な方法として、JSONなどの特定の形式でデータを返すことをお勧めします。

は、あなたの$アヤックス構成に

dataType:'json' 

を追加し、そしてもちろんのPHP出力他の可能性のための

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

または'msg'=>'failure'を、持っています。 JSで次に

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

試してみてください。

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

あなたはPRする必要があるかもしれませんototype a trimメソッドがブラウザ間でサポートされていない場合は、このメソッドを使用します。

1

単純に、比較のために===を使用できます。それは有用かもしれません。