正在做订单列表,需要为不同订单状态的查询、上提加载等操作写ajax请求,这些请求大部分代码都一样,只在个别参数还有回调函数中的一处地方有不同:
我要写很多个请求,这样复制粘贴感觉很麻烦,以后如果拼接内容有变动,我还得改每处代码,不知道有没有什么方法能简化代码、复用代码。。。想过用eval()函数,把ajax请求拼接成字符串,但涉及好多层引号,拼不对、、
使用 promise 封装请求 百度一下 你就知道
不知道这样可否解决你的需求:
封装公用Ajax函数,比如Like This:
var Common = {
ajax: function(data,fn,async){
if(typeof(async)==undefined){
async = true;
}
fn = _.isFunction(fn) ? fn : function(data){console.log("data arrived,with no callback:",data);}
$.ajax({
type : "POST",
url : window.location,
async: async,
dataType : "json",
data : data,
beforeSend : Common.loadShow,
})
.always(Common.loadHide)
.done(fn)
}
, loadShow: function(){
//do sth
}
}
, loadHide : function(){
////do sth
}
}
使用Like This:
var requestData = "..."; //根据不同状态,做下区别即可;为了复用,也可封装成函数,用函数返回值即可。
Common.ajax( requestData , function(data){...});
如需复用请求成功的处理函数,您也可以将这里回调的匿名函数做下封装。