我有这个功能,在点击#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
的值。
为什么警报会在主要功能中显示错误且正确的值?
答案 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;*/
});
});
注意:不要在全球范围内造成不必要的混乱。