如何使用$ http发送数据

时间:2016-11-10 14:28:17

标签: angularjs angular-http

我希望能够为每个发送到后端的$ http.post()发送ipAddress,而不会在每次发送帖子时手动提及它。怎么做角度?我发现jQuery中有$ajax.setup你能不能给我一个在角度js做类似事情的例子?

$http.post('actions.php', {ip: ipAddress, data: add})
        .then(function (response) {
            alert("post sent")
        });

4 个答案:

答案 0 :(得分:0)

您可以在运行时设置HTTP标头中的ipAddress,如下所示:

module.run(function($http) {
  $http.defaults.headers.common.IpAddress = ipAddress;
});

或将其添加到所有请求的HTTP标头,可以通过访问当前包含此默认配置的$httpProvider.defaults.headers配置对象来完全配置这些​​默认值。

有关详细信息,请查看Angular docsSetting HTTP Headers服务的$http部分。

答案 1 :(得分:0)

您可以创建自定义“$ http”工厂,将自定义数据添加到每个请求中。

angular.module('app', [])
.factory('myHttp', ['$http', function($http)
{
    return function(method, url, args)
    {
        var data = angular.extend({ip: '127.0.0.1'}, args);

        return $http[method](url, data);
    };
}])
.controller('myCtrl', function($http, myHttp)
{
    myHttp('post', 'actions.php', {a: 'a'})
        .then(function(response)
        {
            alert("post send");
        });
});

答案 2 :(得分:0)

您可以使用$ http拦截器。您可以将拦截器添加到$ httpProvider。每个$ http请求都会调用它。您可以添加逻辑以请求拦截器的方法。查看一些用法here

答案 3 :(得分:0)

这样可行。首先使用get方法捕获客户端的ip地址,然后使用post方法发送它。

 <script>
        var app = angular.module('myApp', []);
        app.controller('ctrl', function($scope, $http) {
            var json = 'http://ipv4.myexternalip.com/json';
            $http.get(json).then(function(result) {
                var ip_addr=result.data.ip;
                var config = {
                    headers : {
                        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
                    }
                }
                $http.post('actions.php', ip_addr, config)
                    .success(function (data, status, headers, config) {
                    $scope.PostDataResponse = data;
                })
                console.log(ip_addr);
            }, function(e) {
                alert("error");
            });
        });

    </script>