$(document).ready(function() {
userList();
                  alert(hashUser.size());
});function userList() {
$.ajax({
type : "POST",
dataType : "json",
url : "ScoreJson/listClassmates.action",
success : function(data) {
$.each(data.userList, function(i, item) {
hashUser.add(item.userId, item.realName);
}); },
error : function() {
alert("action_error");
}
});
}请教童鞋们 hashUser.size() 怎么总是为0呢 明明是有数据的 是不是异步加载的数据在$(document).ready不能立即获得到,有没有什么解决方案呢

解决方案 »

  1.   

    function userList() {
    $.ajax({
    type : "POST",
    dataType : "json",
    url : "ScoreJson/listClassmates.action",
    success : function(data) {
    $.each(data.userList, function(i, item) {
    hashUser.add(item.userId, item.realName);
    });
    alert(hashUser.size());
    },
    error : function() {
    alert("action_error");
    }
    });
    }你都说是异步的了
      

  2.   


    +++ajax是异步请求的,userList()函数执行到send()的时候,代码不会等待你的ajax的返回结果就立即返回了,接着往下运行下一句了。如果你的ScoreJson/listClassmates.action执行速度非常快,而且是在本地测试的情况,有可能会看到hashUser.size()的结果不是0
      

  3.   

    async(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
    function userList() {
    $.ajax({
    type : "POST",
    dataType : "json",
    async:false,
    url : "ScoreJson/listClassmates.action",
    success : function(data) {
    $.each(data.userList, function(i, item) {
    hashUser.add(item.userId, item.realName);
    });},
    error : function() {
    alert("action_error");
    }
    });
    }