2010-07-13 77 views
11

我很难做一些非常简单的事情。这里是代码:jQuery'如果'语句字符串比较不起作用

 if(data == 'success') { 

      alert('foo'); 

     } else { 

      alert(data); 

     } 

我已经简化了它,但是这就是了解发生了什么的必要条件。变量'data'是AJAX调用的结果,如果这有什么不同。问题在于,它总是进入'else'语句,它会提示'成功',如果它转到'else',它就不应该这样做。任何想法这里发生了什么?

编辑:下面是完整的AJAX代码jQuery中:

$.post("/manage_sites.php", {before:before, edit:after}, function(data){ 

     if(data == success) { 

      alert('blah'); 

     } else { 
      alert(data); 
     } 
    }); 

然后在PHP回应:

...code.... 
$update = mysql_query("UPDATE users SET feeds = '$afterFeed' WHERE username = '$name'") or  die("Query Failed"); 

if($update) { 

    echo 'success'; //this is the 'string' that is being given to 'data' 
} 
+2

'alert(typeof data);'这会给你一个想法,如果你将苹果与橘子比较,并因此总是进入其他。 – 2010-07-13 00:53:37

+0

它给了我'串'。 – williamg 2010-07-13 00:54:49

+1

你可以粘贴完整的ajax响应吗,它是json吗? – redsquare 2010-07-13 00:59:14

回答

28

您可以修复它使用​​这样的客户端:

if($.trim(data) == 'success') { 

或者,更好的办法是去除新线从服务器端来了,可能是一个错误的新线你的PHP在某个地方,在<? ?>区块之前或之后检查,这通常是他们出现的地方。

或者,输出内容,像这样经过短短退出:

if($update) { 
    echo 'success'; 
    exit(); 
} 
+0

我正在阅读元素的'内容'CSS属性,甚至修剪不会帮助比较通过。 – 2015-06-23 19:34:33

0

您可以删除尾随>在你的文件,如果是文件中的最后一行。我想回复对原始问题的评论,但我看不出如何。

+1

你需要50个代表来发表你对未提问的问题的评论。继续发帖! http://stackoverflow.com/faq – jasongetsdown 2010-07-13 01:18:45

0

客户端验证工作的罚款。

$.trim() fine. 

谢谢尼克。我花了很长时间才明白为什么它不工作...