ajax-retrieved-value 在 .load() 和 .on() alerts 中不同



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

.HTML

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

简讯

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 .

为什么警报在 main 函数中显示不正确和正确的值?

以下内容

将确保您在收到 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;*/
     });
 });

注意:不要不必要地弄乱全局范围。

最新更新