2011-09-29 14 views
3

おそらく単純なデーモンですが、私はこれを理解できません。私は別のソリューションでほぼ同じコードを使用しています。JQuery AJAXレスポンスの処理

Javascriptを:

$('#drop').click(function(e) { 
    e.preventDefault(); 
    $('#login').slideToggle(1000); 
}); 

$('#sub').click(function(e) { 
    e.preventDefault(); 
    $('#info').html('<img src="img/load.gif" />') 
    $.post('login.php', {user: document.getElementById('user').value, pass: document.getElementById('pass').value}, function(response) { 
     if (response == 'ok') 
     { 
      $('#login').slideUp(500); 
      $('#info').html(''); 
      $('#joocy').html('<img src="img/load.gif" />').load('manage.php'); 
     } 
     else if (response == 'error') 
     { 
      $('#info').html('Invalid user/pass'); 
     } 
    }); 
}); 

PHP:

if ($row = mysql_fetch_array($result)) 
{ 
    echo 'ok'; 
} 
else 
{ 
    echo 'error'; 
} 

応答が送り返されているが、もし、節がそれをキャッチされていません。 typeof()は文字列を返します。

EDIT:他に 場合(応答===「エラー」)//これは動作します文字列

にスペースを気づく、スペースがReturnStringにに追加された理由を誰が説明することができますか?

解決済み:PHPの終了タグの後にスペースがありました。みなさんのお時間をありがとう! :)

+0

を使用することができ、かつif節は何をしていない、コードのphp側から追加されて?常にfalseを返しますか? –

+0

期待どおりにokまたはエラーを返し、if-clauseがfalseを返します。 – chronixlol

+1

==の代わりに===を使用してください。 – Pokuri

答えて

2

PHPスクリプトの '?>'タグの後に空白がある可能性があります。後ろのすべての空白を削除するか、終了タグを削除してみてください。

+0

私の心を越えていない、これは修正しました。 – chronixlol

1

おそらく、出力には、たとえば次のような他の文字が含まれています。 a BOM

$.post('login.php', {user: document.getElementById('user').value, pass: document.getElementById('pass').value}, function(response) { 
    if (response == 'ok') 
    { 
     $('#login').slideUp(500); 
     $('#info').html(''); 
     $('#joocy').html('<img src="img/load.gif" />').load('manage.php'); 
    } 
    else if (response == 'error') 
    { 
     $('#info').html('Invalid user/pass'); 
    } 
    var tmpText = "" + response.length + ": "; 
    for(var tmpI=0; tmpI<response.length; tmpI++) { 
     tmpText += response.charCodeAt(tmpI) + " "; 
    } 
    $("<fieldset></fieldset>").text(tmpText).appendTo("#info"); 
}); 

印刷を行いますか?

+0

6:101 114 114 111 114 32 – chronixlol

0

は、追加のスペースは、あなたが応答するvarリターンを何trim

if($.trim(response)==='error') 
{ 
// 
} 
関連する問題