2

我正在尝试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没有做它的工作

4

3 回答 3

3

AJAX 中的 A 表示异步。

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

首先你运行这段代码:

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

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

  1. $.post()- 调用服务器
  2. 你的其余代码
  3. 当服务器响应时,您的回调
于 2012-05-17T16:07:36.430 回答
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");
于 2012-05-17T16:10:10.217 回答
0

人们通常会验证执行以下操作:

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

当他们真正的意思是

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

这是因为 null 是一个对象,而 == 确实类型强制。

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

于 2012-05-17T16:28:34.937 回答