如果AJAX响应为null,则jQuery中断

时间:2012-05-17 16:04:42

标签: javascript jquery ajax

如果break响应为空,我正在尝试return false / $.post()

....

$('#order_list li > div').remove(); // is to remove `no_data` or `search_box` when clicking on the next `li`

$.post('do.php', { OP: "news_search", category: cat_id },
  function(data_response){
    console.log(data_response); //outputs null if nothing retrieved, or data if otherwise 
    if(data_response==null) //stop code if the response is null
    {
      alert('if works');
      $(this).append(no_data).show('slow');
      return false; // doesn't do the trick
    }
  }, "json");

//if not null, continue with this

if( ! $('.search_box').exists())
{
  $(this).append(search_box).show('slow');
}

....

但正如你所读到的,我的代码并不能解决问题。有任何想法吗?

更新

if(data_response==null)有效,return false不能正常工作

3 个答案:

答案 0 :(得分:3)

AJAX中的A用于异步。

当你到达想要检查的位置时,它已经执行了。

首先运行此代码:

$.post('do.php', { OP: "news_search", category: cat_id }, callback, "json");

这会向服务器发出XmlHttpRequest。我故意只写callback,因为函数只是作为参数传递。 仅在服务器响应时运行。到那时,代码的其他部分已经运行。

  1. $.post() - 致电服务器
  2. 您的其余代码
  3. 当服务器响应时,您的回调

答案 1 :(得分:1)

$.post('do.php', { OP: "news_search", category: cat_id },
  function(data_response){
    console.log(data_response);  
    if(data_response)
    {
      $(this).append(no_data).show('slow');
       // return false; NOT NEEDED
    } else {
      // below condition should remain here, not outside of Ajax
      if( ! $('.search_box').exists()){
        $(this).append(search_box).show('slow');
      }
    }
  }, "json");

答案 2 :(得分:0)

人们通常会验证以下内容:

if (foo == null) {
   foo = "Joe";
}

当他们真正的意思是

if (!foo) {
   foo = "Joe";
}

因为null是一个对象而且==确实输入了强制。

本文中的更多信息:JavaScript undefined vs. null