zoukankan      html  css  js  c++  java
  • AngularJs中POST和GET方式的ajax请求

    angular中ajax请求的方法说明:
    /*
     * _http:angularJs中的$http对象
     * _url:ajax请求的URL
     * _method:请求方式:POST或GET
     * _params:GET方式请求时传递的参数
     * _data:POST方式请求时传递的参数
     * _responseType:在请求中设置XMLHttpRequestResponseType属性,""(字符串,默认),
     * "arraybuffer"(ArrayBuffer);"blob"(blob对象);"document"(HTTP文档)"json"(从JSON对象解析而来的JSON字符串);
     * "text"(字符串);"moz-blob"(Firefox的接收进度事件);"moz-chunked-text"(文本流);"moz-chunked-arraybuffer"(ArrayBuffer流)。
     * 这个参数表示的含义就是服务器给页面返回的数据格式
     * _successCallback:请求成功的回调函数
     * _failureCallback:请求失败的回调函数
     *
    */
    function ajaxClass(_http,_url,_method,_params,_headers,_data,_responseType,_successCallback,_failureCallback){
        this.http = _http
        this.url = _url || "";
        this.method = _method || "GET";
        this.params = _params || "";
        this.headers = _headers || "";
        this.data = _data || "";
        this.responseType = _responseType || "json";
        this.successCallback = _successCallback || function(res){
        };
        this.failureCallback = _failureCallback || function(res){
        
        };
        this.requestData = function (){
            this.http({
            method:this.method,
            url:this.url,
            params:this.params,
            data:this.data,
            headers : this.headers,
            responseType : this.responseType
        }).then(this.successCallback, this.failureCallback);
        }
    }
    POST方式请求数据,并且传递表单数据的例子
    var ajaxApp = angular.module('ajaxApp',[]);
    
    ajaxApp.controller('addCtrl',function($scope,$http,$filter){
        var url = "a.json";
        var ajax = new ajaxClass($http,url,"POST");
        ajax.data = $.param({"username":"qqq","pwd":"bbb","code":"111"});                // 传递表单数据的时候要使用$.param不然服务器没法正常捕获到发送的数据
        ajax.headers = { 'Content-Type': 'application/x-www-form-urlencoded' };            // 千万记住要传递表单数据的时候设置请求头
        ajax.successCallback = function(res){
            var status = res.data.status;
            if (status == 0){
                $scope.gridOptions = res.data;
            }
            else {
                
            }
        };
        ajax.failureCallback = function(res){
        };
        ajax.requestData();
    
    });
    GET方式请求数据,并且传递参数的例子
    var myApp = angular.module('myApp',[]);
    
    myApp.controller('myCtrl',function($scope,$http){
        var url = "a.php";
        //var url = "a.php?limit=10"
        var ajax = new ajaxClass($http,url,"get");
        ajax.params = {"limit":11};                    // 表单方式传递数据或者可以使用在url后面加?limit=11这样的形式传递
        // get方式请求数据不需要设置表头header
        ajax.successCallback = function(res){
            var status = res.data.status;
            $scope.gridOptions = res.data;
            console.log("status = " + status);
            if (status == 0){
                $scope.gridOptions = res.data;
            }
            else {
                
            }
        };
        ajax.failureCallback = function(res){
        };
        ajax.requestData();
    
    });
    GET方式请求数据,不传递参数的例子
    var myApp = angular.module('myApp',[]);
    
    myApp.controller('myCtrl',function($scope,$http){
        var url = "a.json";
        var ajax = new ajaxClass($http,url,"get");
        // get方式请求数据不需要设置表头header
        ajax.successCallback = function(res){
            var status = res.data.status;
            $scope.gridOptions = res.data;
            console.log("status = " + status);
            if (status == 0){
                $scope.gridOptions = res.data;
            }
            else {
                
            }
        };
        ajax.failureCallback = function(res){
        };
        ajax.requestData();
    
    });
     1 html页面需要导入的库如下:
     2 <!DOCTYPE html>
     3 <html>
     4 <head>
     5     <title></title>
     6     <meta charset="UTF-8" />
     7 </head>
     8 <script type="text/javascript" src="../static/bower_components/jquery/dist/jquery.min.js"></script>
     9 <script type="text/javascript" src="../static/bower_components/angular/angular.min.js"></script>
    10 <script type="text/javascript" src="../static/bower_components/ag-grid/website/dist/angularGrid-latest.js"></script>
    11 <body ng-app="myApp" ng-controller="myCtrl">
    12 <ul>
    13     <!--ng-repeat可以循环显示gridOptions下面的数据-->
    14     <!--<li ng-repeat="x in gridOptions.data">
    15     {{ x.Name }}
    16     </li>-->
    17     <li>{{ gridOptions }} "+" {{ gridOptions.length}} </li>
    18 </ul>
    19 </body>
    20 <!--由于我把上面的ajaxClass这个方法是单独放在ajax.js文件的,所以此处需要导入这个文件,provider.js就是创建控制器进行请求的部分-->
    21 <script type="text/javascript" src="../static/js/ajax.js"></script>
    22 <script type="text/javascript" src="../static/js/provider.js"></script>
    23 </html>
  • 相关阅读:
    为何总是在无聊的事中浪费生命
    Objective-C Polymorphism
    [MONGODB]: WHEN ARBITER REQUIRED FOR REPLICA SET
    巴菲特已四度战胜股灾 称A股长期仍将向上(2015年09月14日)
    visual studio 2012 has stopped working
    [2015-04-17] 2015年的股市比2008年还危险……
    Using HiveServer2
    有了Hadoop MapReduce, 为什么还要Spark?
    HIVE: Map Join Vs Common Join, and SMB
    ORA-12170:TNS:连接超时
  • 原文地址:https://www.cnblogs.com/b302/p/4415531.html
Copyright © 2011-2022 走看看