首页 > ajax动态分页遇到的问题如何解决?

ajax动态分页遇到的问题如何解决?

var num;

function getInfo(){
    ajax({ 
      ...
      num = ...;            // 拿到num值
    });
}
getInfo();

initPagination(num);   //动态生成分页

遇到的问题时,initPagination执行的时候,num仍然为undefined,

尝试过通过setTimeout让initPagination之后执行,但是没有生效?
希望达到的目标是:
ajax执行后,拿到num值,然后动态生成分页,请问这个问题如何解决?


把异步方式修改同步


Promise走一个

function getInfo(){
  return new Promise(function(resolve, reject){
    ajax({ 
      // ...
      success: function(suc_data){
        resolve(suc_data);
      },
      error: function(err) {
        reject(err);
      }
    });
  });
}

var num;

getInfo().then(function(suc_data){
  // num = ...; // get num from suc_data

  initPagination(num);
});

话说现在jQuery.ajax也有promise返回了,但是尽量别用,没别的,就是觉得慎得慌

从 jQuery 1.5 开始,$.ajax()返回的jqXHR对象 实现了 Promise 接口, 使它拥有了 Promise
的所有属性,方法和行为。

$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
  beforeSend: function ( xhr ) {
    xhr.overrideMimeType("text/plain; charset=x-user-defined");
  }
}).done(function ( data ) {
  if( console && console.log ) {
    console.log("Sample of data:", data.slice(0, 100));
  }
});

因为你的num是ajax异步取到的,是不能赋值或者返回给其他外部的函数或者变量的。你可以吧分页的函数放在ajax内部实现。


主要原因是ajax是异步调用。所以方法有两个:
1.将对于数据的操作放在ajax的回调函数里。
2.将ajax的异步方式关闭。即:async:false


ajax是异步调用的~~~

//动态生成分页
function initPagination(num){

}
function getInfo(successback){
    ajax({ 
      ...
      ...         
      success:function(data){
          // 拿到num值
          successback(data);
      }
    });
}
getInfo(initPagination);
【热门文章】
【热门文章】