JQuery的Ajax响应处理

JQuery的Ajax响应处理

问题描述:

也许有些简单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

您的php脚本中关闭'?>'标记后可能有空格。尝试删除之后的所有空白,或完全关闭标记。

+0

甚至没有跨过我的想法,这固定它。 – chronixlol

也许输出包含其他字符像例如一个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

可能的额外空间从代码的php侧添加,您可以使用trim

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