将近大半个月的时间终于快要理顺公司的项目,具体涉及到ajax异步请求、图片加载、数据绑定、表单提交。今天就先说一说ajax异步请求。
请求并不难,难的是当请求较多且有关联的时候,初始化成了问题。一般不想等所有的ajax请求结束在初始化,这是很笨的做法。
ps:jequry已经封装好了XMLHttpRequest对象,所以不用写原生js代码进行ajax请求啦。
$.ajax({
async:true, //async属性值为boolean,默认为true表示异步:即不等请求完成即执行func2了,反之false为同步
type:"POST",
url:"Venue.aspx?act=init",
dataType:"html",
success:function(result){ //function1()
f1();
f2();
}
failure:function (result) {
alert('Failed');
},
}
function2();
以上是一段常规的ajax请求。
jquery中关于ajax有个ajaxStop的方法,表示当完所有ajax请求时,执行函数体。有stop方法当然也有start方法,请自行查阅文档。
$("body").ajaxStop(function(){
alert("所有 AJAX 请求已完成");//函数体
})
无疑上述方法特别的蠢,容易造成阻塞,甚至当某一ajax请求出错时,导致函数体无法执行。
幸运的是,.ajax中success中的函数f1()、f2()执行顺序是同步的。表示请求完成时顺序执行。因此可以把需要借助请求数据初始化的函数体放在success中。