2010-07-13 109 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. 

謝謝尼克。我花了很長時間才明白爲什麼它不工作...