2014-10-06 78 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