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
相关文章:
临沂网站制作公司有哪些,临沂第四中学官网?
如何在香港服务器上快速搭建免备案网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
C++时间戳转换成日期时间的步骤和示例代码
已有域名如何免费搭建网站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何选择靠谱的建站公司加盟品牌?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何通过FTP服务器快速搭建网站?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
宝塔建站助手安装配置与建站模板使用全流程解析
建站OpenVZ教程与优化策略:配置指南与性能提升
如何选择网络建站服务器?高效建站必看指南
香港网站服务器数量如何影响SEO优化效果?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站之星收费标准详解:套餐费用及年费价格表一览
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何快速搭建个人网站并优化SEO?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
建站之星展会模板:智能建站与自助搭建高效解决方案
制作门户网站的参考文献在哪,小说网站怎么建立?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在IIS中配置站点IP、端口及主机头?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何快速生成橙子建站落地页链接?
如何在服务器上配置二级域名建站?
,怎么用自己头像做动态表情包?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站之星上传入口如何快速找到?
招商网站制作流程,网站招商广告语?
建站之星价格显示格式升级,你的预算足够吗?
内部网站制作流程,如何建立公司内部网站?
建站之星各版本价格是多少?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何确保西部建站助手FTP传输的安全性?
如何通过主机屋免费建站教程十分钟搭建网站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
济南网站制作的价格,历城一职专官方网站?
建站之星如何通过成品分离优化网站效率?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
网页设计网站制作软件,microsoft office哪个可以创建网页?
建站之星2.7模板快速切换与批量管理功能操作指南
太平洋网站制作公司,网络用语太平洋是什么意思?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站之星北京办公室:智能建站系统与小程序生成方案解析
*请认真填写需求信息,我们会在24小时内与您取得联系。