日期:2014-05-17  浏览次数:20529 次

js 公共变量获取不到值?

var total; //公共变量
//获取总数
function GetTotal() {
 $.ajax({
  url: 'webashx/newcount.ashx',
  success: function (data) {
  total = data;//公共变量赋值 }
  });
 }

//页面加载完的时候进行初始化操作
 $(document).ready(function () {
  GetTotal(); //异步取得总页数
  alert(total);//这里获取不到上面已经赋的值,值为空 $("#pager").pager({ pagenumber: 1, pagecount: total, buttonClickCallback: PageClick }); //初始化分页导航
  PageClick(1); //页面初次加载时显示第一页
 });

//单节分页导航数字是执行异步加载数据
PageClick = function (pageclickednumber) {
  $("#pager").pager({ pagenumber: pageclickednumber, pagecount: total, buttonClickCallback: PageClick });
  $.ajax({
  url: 'webashx/newsinfo.ashx',
  type: 'GET',
  data: { pageindex: pageclickednumber },
  success: function (data) {
  $("#result").html(data);
  }
  });

}

这个是分页代码,为什么公共的变量值不一样呢。在 GetTotal() 方法中已经赋值了,可是在下面却得不到值?

------解决方案--------------------
如果上面那个赋值的方法是异步去调用的,那有可能是alert的时候后台的结果还没有return回来。
你在success里面加个debugger调试一下,看是不是先alert后进到success的function里面
------解决方案--------------------
检查一下data的返回值是什么?还有就是ajax默认是异步访问的,异步访问的话,可能你弹出时,尚未返回值
------解决方案--------------------
楼上分析的对 你在你的ajax里面写上不是异步调用
如:
async: false,
------解决方案--------------------
你为什么不在ajax的回调函数里写你后续的一些操作呢?
既然是异步执行,一定是在你弹出信息后才执行完的
------解决方案--------------------
探讨

怎么做呢?有人知道吗?现在加载的数据没出来的时候,已经执行下面的方法了