关于作者
马隆博(Lenbo Ma),Java,Javascript
Blog: http://mlongbo.com
E-Mail: mlongbo@gmail.com
文章编写于: 2014/08/10
转载请说明出处:
http://mlongbo.com/http-js-zai-ajaxdan-y…
要处置惩罚的题目
简化api运用;
为页面中Ajax要求设置全局阻拦器;
页面中所有Ajax要求向服务器发送全局参数;
完成
简化API
我个人喜好链式挪用,以及简单明了的API设想。因而,我主要在以下几个部份做了简化:
为每种要求范例增添一个函数。如:
$http.get();
$http.post();
$http.del();
$http.put();
能够动态设置要求参数;
req.push(key,val); or req.push(jsonObj); //设置要求参数, 可同时增添一个或多个参数
req.data(jsonObj); //会掩盖push函数设置过的值
req.header(key,val); or req.header(jsonObj); //要求头, 可同时增一个或多个
req.headers(jsonObj); //会掩盖header函数设置过的值
一样, 其他的功用也能够拆分红自力函数来设置, 比方:
req.type(typeStr); //设置相应数据范例
req.cache(boolean); //是不是缓存
总之,你完全能够根据你本身最喜欢的体式格局定制API。
阻拦器完成
之所以会有阻拦器的需求,是因为我之前所做的一个运用的数据相应花样以下:
{
code: 1,
message: '相应信息'
}
个中code值会有如许几种值:
0 failed
1 success
2 session timeout
因而我须要一致处置惩罚会话逾期状况,比方关照用户从新登录等。
我运用req.interceptor(type,func(res){});
来增添一个阻拦器。当服务器相应数据时,将先挪用设置的全局阻拦器,以后再去挪用营业相干的回调函数。假如我http.js去服务器猎取html模板代码时,即相应的数据范例是text/html
,而不是application/json
,这时候再去做阻拦就不好玩了。因而,我用了一个type参数来给interceptor分组。
发送全局参数
我做单页面运用时,会有如许一个情形:
当用户登录后,服务器会返回一个token值,以后的大部份api要求都须要通报这个token参数。因而,假如在每次ajax要求时都手动增添一个token参数值,就觉得有些效力低下。一样,你的同事们能够也会碰到和你一样的状况,这时候还要一个个通知他们怎样设置token参数就很不好玩儿了。
因而,我在http.js中增添$http.global(key,val);
or $http.global(jsonObj);
如许一个函数来处置惩罚上面的题目。
结语
至于基于什么ajax库来封装,你能够运用原生ajax,jquery ajax,或许其他你喜好的ajax library。同时,迎接种种议论 ^_^
这是我写的http.js代码片断,不太周全,或许可供你参考。
扫描二维码,关注我。
内容大多会是后端手艺、前端工程、DevOps,偶然会有一些大数据相干,会引荐一些好玩的东西。愿望你会喜好~