全网整合营销服务商

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

免费咨询热线: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 


相关文章: 临沂网站制作公司有哪些,临沂第四中学官网?  如何在香港服务器上快速搭建免备案网站?  如何在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小时内与您取得联系。