2014-10-06 99 views
1

下面的代碼非常簡單。基本上,如果變量「ret」返回一個值,並且該值爲「fail」,它應該發佈Alert:「Trigger 2」。但是,問題在於IF聲明。它觸發Alert:「Trigger 1」,當條件語句出現時,它跳過它。jquery:如果語句不起作用

我想知道我是否做錯了什麼。謝謝。

$(function() { 
    var body = $(document).find("body");  
    body.on("submit", "#form-user-profile", function (e) { 
     var data = $(this).serialize(); 
     var url = $(this).attr("action"); 
     $.post(url, data, function(ret) { 
      alert("Trigger 1"); // Triggers alert 
      if (ret == "fail") { 
       alert("Trigger 2"); // does not trigger alert 
      } 
     }); 
     return false; 
    }); 
}); 
+2

那麼,如果'if'被跳過,那麼'ret'不是''失敗''。您是否嘗試過調試以查看您的AJAX文章完成時'ret'的實際值?例如,在回調中提醒或記錄'ret'的值? – ajp15243 2014-10-06 14:07:17

+0

使用瀏覽器的調試器工具什麼是你的函數返回的。 – 2014-10-06 14:10:37

+0

@ ajp15243:是的,它發佈爲「失敗」,但它做了alert語句併發布了「ret」的值,但是當IF語句出現時,它完全忽略了它。 – Jo3L 2014-10-06 14:12:22

回答

1

如果響應實際上是fail那麼最有可能的問題是一些空白周圍的反應,引起if語句評估爲假。這可以通過修改響應來解決:

if ($.trim(ret) == "fail") { 
+0

非常感謝!這工作! – Jo3L 2014-10-06 14:32:29

1

如果代碼實際運行,您應該能夠使用Chrome或Firefox開發工具查看來自Post URL的響應頭。這應該給你實際的迴應,並幫助你調試答案,我想它只是返回一些與你有的東西接近的東西,但不完全是你的東西。

+0

是的,我實際上使用firebbug 2.0.4來跟蹤回覆。 – Jo3L 2014-10-06 14:35:51