ajax请求执⾏完成后再执⾏其他操作(jQuery.page.js插件使⽤
为例)
就我们做知,ajax强⼤之处在于它的异步请求,但是有时候我们需要ajax执⾏彻底完成之后再执⾏其他函数或操作
这个时候往往我们⽤到ajax的回调函数,但是假如你不想或者不能把接下来的操作写在回调函数中,怎么办?
以jquery.page.js插件为例,分页初始化如下:
$(".tcdPageCode").createPage({
pageCount:100,
current:1,
backFn:function(p){
//console.log(p);
}
});
这⾥pageCount总页数我需要从后台动态获取,也就是需要ajax请求接⼝后返回的值
⼀开始我把分页初始化的这段代码写在ajax的回调函数中
function getRecourcesAction(result) {
if (result != null) {
$(".tcdPageCode").createPage({
pageCount: result.pageCount,
current: nowPage,
backFn: function (p) {
pageNo=p-1;
nowPage=p;
getRecources(getRecourcesAction);
}
});
var html = template('recources', {
list: result.data
});
$("#recource li").remove();
$("#recource").append(html);
}
else {
layer.open({
title: '提⽰',
content: "资源查询失败!"
});
}
}
因为backFn中会继续请求,所以会重复创建,上⼀页、下⼀页翻页时会出现连续跳页的情况,最后超出总页数⽽溢出出错
解决办法:
设置全局变量pageCount,先进⾏ajax请求,得到返回的总页数后赋值给pageCount,然后再进⾏初始化分页。注意:ajax请求时,设置async: false(默认为true),进⾏同步请求,即Ajax请求将整个浏览器锁死,只有请求结束后才能执⾏其他操作,否则pageCount值还未返回就先初始化分页了。
$(function(){
getRecources(getRecourcesAction); //初始化页⾯(资源初始化)
//初始化分页
$(".tcdPageCode").createPage({
pageCount: pageCount,
current: nowPage,
jquery实现ajaxbackFn: function (p) {
pageNo=p-1;
nowPage=p;
getRecources(getRecourcesAction);
}
});
});
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论