全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

angularjs封装$http为factory的方法

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小时内与您取得联系。