我希望能够为每个发送到后端的$ http.post()发送ipAddress
,而不会在每次发送帖子时手动提及它。怎么做角度?我发现jQuery中有$ajax.setup
你能不能给我一个在角度js做类似事情的例子?
$http.post('actions.php', {ip: ipAddress, data: add})
.then(function (response) {
alert("post sent")
});
答案 0 :(得分:0)
您可以在运行时设置HTTP标头中的ipAddress
,如下所示:
module.run(function($http) {
$http.defaults.headers.common.IpAddress = ipAddress;
});
或将其添加到所有请求的HTTP标头,可以通过访问当前包含此默认配置的$httpProvider.defaults.headers
配置对象来完全配置这些默认值。
有关详细信息,请查看Angular docs上Setting 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>