2011-09-29 130 views
3

也許有些簡單DERP但我只是不明白這一點,我使用幾乎相同的代碼在不同的解決方案,它的工作原理。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()返回字符串。

編輯: 否則,如果(響應===「錯誤」)//注意字符串

這工作,任何人都可以解釋爲什麼空間追加到returnstring的空間?

解決:PHP結束標記後有空格。感謝您的時間每個人! :)

+0

什麼響應的VAR回報,又是什麼的if語句不爲呢?總是返回false? –

+0

按預期返回ok或錯誤,並且if子句返回false。 – chronixlol

+1

嘗試用===代替== – Pokuri

回答

2

您的php腳本中關閉'?>'標記後可能有空格。嘗試刪除之後的所有空白,或完全關閉標記。

+0

甚至沒有跨過我的想法,這固定它。 – chronixlol

1

也許輸出包含其他字符像例如一個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

可能的額外空間從代碼的php側添加,您可以使用trim

if($.trim(response)==='error') 
{ 
// 
}