angularJS 发起$http.post和$http.get请求

AngularJS发起$http.post请求

代码如下:

$http({  
    method:'post',  
    url:'post.php',  
    data:{name:"aaa",id:1,age:20}  
}).success(function(req){  
    console.log(req);  
})  

这时候你会发现收不到返回的数据,结果为null,这是因为要转换成form data。 
解决方案:

  • 配置$httpProvider:
var myApp = angular.module('app',[]);  
 myApp.config(function($httpProvider){  

   $httpProvider.defaults.transformRequest = function(obj){  
     var str = [];  
     for(var p in obj){  
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));  
     }  
     return str.join("&");  
   }  

   $httpProvider.defaults.headers.post = {  
        'Content-Type': 'application/x-www-form-urlencoded'  
   }  

});  

 angular.module("base", [])

   .base.factory("$jsonToFormData",function() {
    function transformRequest( data, getHeaders ){
        var headers = getHeaders();
        headers["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8";
        if(typeof( data )=="string"){
            return data;
        }
        return $.param(data);
    }
    return( transformRequest );
}).service('baseService', ['$http','$q','$jsonToFormData', function($http,$q,$jsonToFormData) {var service = {
            /**
             * get请求,输入url。
             * 调用方法:
             * var def=baseService.get(url);
             * def.then(
             *     function(data){},
             *     function(){});
             */
            get:function(url){
                var deferred = $q.defer();
                $http.get(url).success(function(data,status){
                    deferred.resolve(data);
                })
                .error(function(data,status){
                    deferred.reject(status);
                });
                return deferred.promise;
            },
            /**
             * 数据使用表单键值对的方式提交。
             * 在post数据时使用www-form-urlencoded方式提交。
             * 发送数据方式:
             * 1.构建键值对
             *     var str="name=tony&age=19";
             *  postForm(user,str);
             * 2.构建简单json对象
             *  var obj={name:"tony",age:19};
             *  postForm(user,obj);
             *  
             *  数据处理方式:
             *  var obj=baseService.postForm(url,params);
             *  obj.then(
             *      //调用成功时处理,服务器返回状态为200时。
             *      function(data){
             *      },
             *      //调用失败时处理,服务器返回状态 为400或500.
             *         function(status){
             *  });
             *  
             */
            postForm:function(url,param){
                var deferred = $q.defer();
                $http.post(url,param,{transformRequest:$jsonToFormData})
                 .success(function(data,status){
                     deferred.resolve(data);
                 })
                 .error(function(data,status){
                     deferred.reject(status);
                 });
                 return deferred.promise;
            },
            /**
             * 将数据直接post到指定的URL。
             * 服务端接收方法:
             * 1.复杂对象。
             * var obj={name:"zyg",age:"19",friends:[{name:"laoli",sex:"male"},{name:"tony",sex:"male"}]};
             * 使用:
             * public void demo1(HttpServletRequest request,

                 HttpServletResponse response,@RequestBody User user) throws IOException 
             * 2.直接读取流的方式。
             *     String str=FileUtil.inputStream2String(request.getInputStream());
             *    User user= JSONObject.parseObject(str, User.class);
             */
            post:function(url,param){
                var deferred = $q.defer();
                $http.post(url,param)
                 .success(function(data,status){
                     deferred.resolve(data);
                 })
                 .error(function(data,status){
                     deferred.reject(status);
                 });
                 return deferred.promise;
            }
        }
    return service;
}])

  • 或者在post中配置
$http({  
   method:'post',  
   url:'post.php',  
   data:{name:"aaa",id:1,age:20},  
   headers:{'Content-Type': 'application/x-www-form-urlencoded'},  
   transformRequest: function(obj) {  
     var str = [];  
     for(var p in obj){  
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));  
     }  
     return str.join("&");  
   }  
}).success(function(req){  
       console.log(req);  
})  

AngularJS发起$http.post请求

代码如下:

    app.controller('sprintCtrl', function($scope, $http) {
            $http.get("http://localhost:8080/aosapp/pt/service?formid=pt_aosapp_service_sprintlist&teamid=1")
            .success(function (response) {console.log($scope.sprintlist=response);});
        });

其实,angularjs 和 jquery js最大的区别在哪儿那,angularjs是你事先在心中构建好真个页面,然后用变量或者占位符来表示数据,数据来了,直接填充就可以了;而jquery则是动态的修改dom元素,如添加修改dom标签等。设计思想不一样。

 

 

转载于:https://my.oschina.net/u/2332233/blog/1620275

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值