场景下开发-$http服务封装

news/2024/7/8 13:27:43

 

 

$http服务封装

.factory('htp',function(){
    
//    htp.runServiceWithSession()
//    htp.runService()
//    htp.runService($http, $ionicLoading, "member.register",
//            $scope.user, function(data, status){}
    
    
//    错误处理 函数
    function callErrorFunction(errorFun, data, status, 
            $ionicLoading,$ionicPopup){

        if (errorFun)
            errorFun.call(this, data, status);
        else {
            // alert(msg);
            if (typeof (data) == 'string') {
                if ($ionicPopup)
                    $ionicPopup.alert({
                        template : data,
                        okText : "确定",
                        okType : 'button-confirm',
                        cancelType : 'button-cancel',
                        cssClass : 'custom_popup'
                    });
                else if ($ionicLoading)
                    $ionicLoading.show({
                        template : data,
                        duration : 2000
                    });
            } else {
                if(data.solution!=''&&data.solution!=undefined){
                    if ($ionicPopup)
                        $ionicPopup.alert({
                            template : data.rtnmessage + "," + data.solution,
                            okText : "确定",
                            okType : 'button-confirm',
                            cancelType : 'button-cancel',
                            cssClass : 'custom_popup'
                        });
                    else if ($ionicLoading)
                        $ionicLoading.show({
                            template : data.rtnmessage + "," + data.solution,
                            duration : 2000
                        });
                }else{
                    if ($ionicPopup)
                        $ionicPopup.alert({
                            template : data.rtnmessage,
                            okText : "确定",
                            okType : 'button-confirm',
                            cancelType : 'button-cancel',
                            cssClass : 'custom_popup'
                        });
                    else if ($ionicLoading)
                        $ionicLoading.show({
                            template : data.rtnmessage,
                            duration : 2000
                        });
                }
            }
        }
    }
    
    return{
//        init: function(){},
        runServiceWithSession: function($http, $ionicLoading, $state,
                method, bizObj,successFun, errorFun,timeOut){
            
            runService($http, $ionicLoading, method, bizObj, successFun, function(data,
                    status) {
                if (data.rtncode == 'account.session.timeout'
                        || data.rtncode == 'account.session.invalid'
                        || (data.rtncode != undefined && data.rtncode
                                .indexOf('need login') > -1)) {
                    $state.go('logon', {});
                } else {
                    AmApp.callErrorFunction(errorFun, data, status, $ionicLoading);
                }
            },timeOut);

        
            
        },
        runService: function($http, $ionicLoading, $ionicPopup, 
                method, bizObj,successFun, errorFun,timeOut){
            console.log(bizObj);
            if(typeof ($ionicPopup) == 'string'){
                timeOut = errorFun;
                errorFun = successFun;
                successFun = bizObj;
                bizObj = method;
                method = $ionicPopup;
                $ionicPopup = undefined;
            };
            var timeOut =(timeOut)?timeOut:1500;
    if(navigator && navigator.connection
                    && navigator.connection.type == 'none'){
                
            }else{
//                $http数据交互
                $http({
                    method : 'POST',
                    url : url,
                    data : bizObj,
                    headers : {
                        'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8'
                    },
                    transformRequest : function(obj) {
                        var str = [];
                        for ( var p in obj)
                            str
                                    .push(encodeURIComponent(p)
                                            + "="
                                            + encodeURIComponent(encodeURIComponent(obj[p])));
                        return str.join("&");
                    },
                    timeout : timeOut
                    
                })
                .success(function(data, status, header, config){

                    if ($ionicLoading) $ionicLoading.hide();
                    if (status == 200) {
                        if (typeof (data) == 'string') {
                            callErrorFunction(errorFun, data, status,
                                    $ionicLoading, $ionicPopup);
                        } else {
                            if (data.issuccess == true)
                                successFun.call(this, data.result, status);
                            else
                                callErrorFunction(errorFun, data, status,
                                        $ionicLoading, $ionicPopup);
                        }
                    } else {
                        callErrorFunction(errorFun, "数据获取错误", status,
                                $ionicLoading, $ionicPopup);
                    }
                
                    
                })
                .error(function(data, status, header, config){
                    if ($ionicLoading)
                        $ionicLoading.hide();
                    if (status == 500)
                        callErrorFunction(errorFun, "检测到服务状态异常", status,
                                $ionicLoading, $ionicPopup);
                    else if (status == 0)
                        callErrorFunction(errorFun, method + "连接超时",
                                status, $ionicLoading, $ionicPopup);
                    else
                        callErrorFunction(errorFun, "网络连接错误", status,
                                $ionicLoading, $ionicPopup);
                    
                })
            }
            

            
        },
    }
    
})

 

转载于:https://www.cnblogs.com/alan-alan/p/7308371.html


http://www.niftyadmin.cn/n/3156035.html

相关文章

IDEA设置默认Maven

idea设置默认maven配置, 避免每次设置maven Step 1:Other Setting--->Default Settings--->设置maven--->Apply--->OK

JS控制div跳转到指定的位置的几种解决方案总结

原文:http://www.jb51.net/article/96574.htm 这篇文章主要介绍了JS控制div跳转到指定的位置的几种解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。 总结一下自己在写这个需求遇到的问题,相信大家应…

localdate判断为null_Java8之使用Optional进行Null处理

Optional类这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题,本篇文章将详细介绍Optional类,以及如何用它消除代码中的null检查。1.创建optional对象empty() 方法用于创建一个没有值的Optional对象:Opti…

netfilter 结构整理

(Linux network) netfilter struct 整理 结构体关系图 阐述了结构体之间的关联xt_table 在net->netns_ipv4结构体中,包含了如下几个xt_tableiptable_filteriptable_mangleiptable_rawarptable_filternat_filterstruct xt_table {struct list_head list;//xt_tabl…

图片空间-网盘

就是酱紫的一个东西,类似于一个网盘,只不过它仅仅用于存储图片。 完成的初级效果图。这里的ztree我用的是metro的那个,但是并未引用他的js,同时也带来一些css样式问题:1、叶子图标我要显示为文件夹图标, 2、…

绿盟科技网络安全威胁周报2017.01 请关注MatrixSSL堆缓冲区溢出漏洞CVE-2016-6890

绿盟科技发布了本周安全通告,周报编号NSFOCUS-16-39,绿盟科技漏洞库本周新增30条,其中高危9条。本次周报建议大家关注 MatrixSSL 堆缓冲区溢出漏洞 ,目前,此漏洞已经公布了一段时间并且官方已经进行了修复,…

python迭代器有什么好处_浅析Python迭代器的高级用法

跳过开头首先是跳过开始部分,这个在我们读取文本的时候最常用。在实际的应用当中,比如记录的日志或者是代码等等,一般来说头部都会附上一段说明,或者用注释标注或者是用特殊的符号标记。这些信息是给用到数据的程序员看的&#xf…

SpringBoot+Dubbo构建微服务

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 一、先来一张图 说起 Dubbo,相信大家都不会陌生&#…