anguar的$http 笔记

使用Ng开发中必不可少要用到$http通信,那么这个$http 和JQ封装好的ajax有什么区别呢?

1.$http 的post传递参数方法不同

ng使用post方法传递的参数是json格式,而Jq的post方法传递过去的参数是form表格传递方式,所以如果使用ng开发,最好一开始就和后台约定好接收数据时先解析json数据,不然后台很有可能接收不了数据。

2.ng能配合$q使用Promise方式

虽然新版Jq也支持Promise,不过Ng的也很不错
附上一篇文章
https://segmentfault.com/a/1190000002788733

3.ng能写拦截器,统一处理某些状态

一般使用Jq的Ajax时,都会做一些错误处理,然而如果项目庞大了,有些错误处理是重复多次书写的。就算是简简单单写一个 error 方法,写多了也会觉得很烦。

但是Ng支持一个拦截器的服务

angular.module("app").factory('myInterceptor', ['$log', function($log) {    //拦截器 统一处理 登陆异常状态    var myInterceptor = {        response: function(response) {            // $rootScope.loading = false;            if (response.status == 200) {                var info = response.data;                if (info.status == 0) {                    location.href = "/adminWcloud/login.html";                }            } else {                ot.warn("这次请求发生错误")            }            response.config.responseTimestamp = new Date().getTime();            return response;        }    };    return myInterceptor;}]);

以上代码是创建一个叫myInterceptor的服务,response表示如果请求有响应时执行funtion 那么当请求状态为200时就是请求成功,不是就是请求失败,所以统一一个错误提示方法(ot为本人封装好的一个提示方法)。但请求成功不代表这次请求没有错误,例如我接收到请求数据有个字段属性为0时,代表 用户操作异常 , 我需要将用户弹回登陆页面,重新登陆。

然后在app中注入服务

$httpProvider.interceptors.push('myInterceptor');

关键字:angularjs, JavaScript

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部