anguar的$http 筆記

使用Ng開發中必不可少要用到$http通訊,那麼這個$http 和JQ封裝好的ajax有什麼區別呢?

1.$http 的post傳遞參數方法不一樣

ng使用post方法傳遞的參數是json格式,而Jq的post方法傳遞過去的參數是form表格傳遞方式,因此若是使用ng開發,最好一開始就和後臺約定好接收數據時先解析json數據,否則後臺頗有可能接收不了數據。html

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

雖然新版Jq也支持Promise,不過Ng的也很不錯
附上一篇文章
http://www.javashuo.com/article/p-ejzplnve-h.htmlajax

3.ng能寫攔截器,統一處理某些狀態

通常使用Jq的Ajax時,都會作一些錯誤處理,然而若是項目龐大了,有些錯誤處理是重複屢次書寫的。就算是簡簡單單寫一個 error 方法,寫多了也會以爲很煩。json

可是Ng支持一個攔截器的服務segmentfault

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

而後在app中注入服務ide

$httpProvider.interceptors.push('myInterceptor');
相關文章
相關標籤/搜索