ajax-retrieval-value在.load()和.on()警报中不同

时间:2018-03-14 23:17:53

标签: jquery

我有这个功能,在点击#container后将数据加载到li

HTML

<li onclick="$(document).ShowPosts(4)"></li>
<div class="more">[show posts]</div>

   <div id="container"></div>

JQUERY

jQuery.fn.ShowPosts = function(id_user) {

 var total_posts=999999999;

  $.ajax({
     type: 'POST',
     url: "total_posts.php",
     data: {
       'id_user': id_user
     },
     success: function(data) {
       var total_posts = data;
     });

    //load first group      
    $("#container").load(url_load,{id_user':id_user}, 
   function(){ alert(total_posts); /*shows up 9999999;*/
  });                


   $(".more").on('click', function(e) {
       alert(total_posts); /*shows up retrieved by ajax - correct;*/
     }
   });

}

问题

问题是,在首次加载.load()之后,load() function(){}警报显示total_posts as 9999999(预定义值)时必须为the retrieved by ajax total_posts.php

但在.on()点击.more时,警告会正确显示total_posts的值。

为什么警报会在主要功能中显示错误且正确的值?

1 个答案:

答案 0 :(得分:1)

以下内容将确保您在收到ajax响应之前不执行.load()来获取正确的值。

success: function(data) {
    var total_posts = data;
    //load first group      
     $("#container").load(url_load,{id_user:id_user}, function(){ 
         alert(total_posts); /*shows up 9999999;*/
     });
 });

注意:不要在全球范围内造成不必要的混乱。