angularjs有本身封装的ajax服务$http,因为用惯了jQuery的ajax,所以,自己封装了一下angularjs的$http,代码如下
app.factory('dataFactory', function ($http, $q){
var factory = {};
factory.getlist = function(endpoint, method, headers, params) {
var defer = $q.defer();
if (method == 'GET') {
$http({
url: endpoint,
method: "GET",
headers: headers,
params: params,
}).success(function (data) {
defer.resolve(data);
}).
error(function (data, status, headers, config) {
// defer.resolve(data);
defer.reject(data);
});
} else {
$http({
url: endpoint,
method: method,
headers: headers,
data: params,
}).success(function (data) {
defer.resolve(data);
}).
error(function (data, status, headers, config) {
// defer.resolve(data);
defer.reject(data);
});
}
return defer.promise;
};
return factory;
});
在controller中引入dataFactory和$http即可使用更方便的调用ajax,一般情况下headers为
headers = {'Content-Type': 'application/json'};
params为一个json字符串
然后调用
dataFactory.getlist("/api/checkDuplicate", 'GET', headers, params).then(function(data) {
//success函数
},function(data){
//error函数
})
但是其中又一次在项目中,后台框架使用的是Struts框架,在一个Python中使用的很好的dataFactory,在这里的后台取不到数,最后发现是应为header设置不对,而且params的格式也不正确,可以把header修改为
headers = {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'};
上面dataFactory中else添加转换params代码:
var param = function(obj) {
var query = '', name, value, fullSubName, subName, subValue, innerObj, i;
for(name in obj) {
value = obj[name];
if(value instanceof Array) {
for(i=0; i<value.length; ++i) {
subValue = value[i];
fullSubName = name + '[' + i + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value instanceof Object) {
for(subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value !== undefined && value !== null)
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
}
return query.length ? query.substr(0, query.length - 1) : query;
};
$http({
url: endpoint,
method: method,
headers: headers,
data: param(params),
}).success(function (data) {
defer.resolve(data);
}).
error(function (data, status, headers, config) {
// defer.resolve(data);
defer.reject(data);
});
只是个人觉得这个方式比较方便,记录下来,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# http
# 封装
# angularjs封装$http
# 使用Require.js封装原生js轮播图的实现代码
# AngularJS封装$http.post()实例详解
# 原生js封装自定义滚动条
# JS封装通过className获取元素的函数示例
# js封装tab标签页实例分享
# AngularJS封装指令方法详解
# JS封装的选项卡TAB切换效果示例
# 原生js封装的一些jquery方法(详解)
# javaScript封装的各种写法
# 的是
# 也不
# 在这里
# 很好
# 装了
# 更方便
# 惯了
# 大家多多
# ajax
# data
# resolve
# url
# jQuery
# success
# return
# promise
# method
# reject
相关文章:
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何正确选择百度移动适配建站域名?
在线教育网站制作平台,山西立德教育官网?
建站主机选购指南:核心配置优化与品牌推荐方案
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
香港服务器租用费用高吗?如何避免常见误区?
高端企业智能建站程序:SEO优化与响应式模板定制开发
香港服务器网站卡顿?如何解决网络延迟与负载问题?
历史网站制作软件,华为如何找回被删除的网站?
建站之星安装提示数据库无法连接如何解决?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
建站之家VIP精选网站模板与SEO优化教程整合指南
如何用已有域名快速搭建网站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
小建面朝正北,A点实际方位是否存在偏差?
教学网站制作软件,学习*后期制作的网站有哪些?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
制作企业网站建设方案,怎样建设一个公司网站?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
c# await 一个已经完成的Task会发生什么
魔毅自助建站系统:模板定制与SEO优化一键生成指南
宝塔Windows建站如何避免显示默认IIS页面?
深圳网站制作培训,深圳哪些招聘网站比较好?
定制建站如何定义?其核心优势是什么?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何用VPS主机快速搭建个人网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何通过FTP空间快速搭建安全高效网站?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何在云主机快速搭建网站站点?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星如何实现PC+手机+微信网站五合一建站?
如何注册花生壳免费域名并搭建个人网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何选择高效便捷的WAP商城建站系统?
建站主机与虚拟主机有何区别?如何选择最优方案?
网站按钮制作软件,如何实现网页中按钮的自动点击?
北京制作网站的公司,北京铁路集团官方网站?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站主机CVM配置优化、SEO策略与性能提升指南
*请认真填写需求信息,我们会在24小时内与您取得联系。