angularjs封装$http为factory的方法
发布时间 - 2026-01-11 01:10:25 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Python面向对象测试方法_mock解析【教程】
如何快速搭建高效WAP手机网站吸引移动用户?
如何快速搭建FTP站点实现文件共享?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
如何在局域网内绑定自建网站域名?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
原生JS实现图片轮播切换效果
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel怎么使用Intervention Image库处理图片上传和缩放
香港服务器租用费用高吗?如何避免常见误区?
青岛网站建设如何选择本地服务器?
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
java ZXing生成二维码及条码实例分享
微信h5制作网站有哪些,免费微信H5页面制作工具?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Python并发异常传播_错误处理解析【教程】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何挑选最适合建站的高性能VPS主机?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
如何正确下载安装西数主机建站助手?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
网站制作报价单模板图片,小松挖机官方网站报价?
Python正则表达式进阶教程_复杂匹配与分组替换解析
教学论文网站制作软件有哪些,写论文用什么软件
?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
移动端脚本框架Hammer.js
微信小程序 五星评分(包括半颗星评分)实例代码
香港服务器租用每月最低只需15元?
北京专业网站制作设计师招聘,北京白云观官方网站?
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何处理异常和错误?(Handler示例)
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
EditPlus中的正则表达式实战(5)
Python文件操作最佳实践_稳定性说明【指导】
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
C语言设计一个闪闪的圣诞树

