2016-11-10 14 views
0

ポストを送信するたびに手作業で言及せずにバックエンドに送信される$ http.post()ごとにipAddressを送信したいと思っていました。どのように角度でそれを行うには?私は$ajax.setupがjQueryにあることがわかりました。角度のあるjsで同様のことをする例を教えてください。

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

答えて

0

あなたはこのような実行時にHTTPヘッダーであなたのipAddressを設定することができます。

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

またはすべての要求にHTTPヘッダに追加し、これらのデフォルトは、完全に$httpProvider.defaults.headers構成オブジェクトにアクセスすることにより構成することができますこれには現在このデフォルト設定が含まれています。

詳細については、$httpサービスのSetting HTTP HeadersセクションをAngular docsに確認してください。

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"); 
     }); 
}); 
0

$ httpインターセプタを使用できます。インターセプタを$ httpProviderに追加することができます。 $ http要求ごとに呼び出されます。ロジックを追加して、インターセプタのメソッドをリクエストすることができます。いくつかの用途を参照してくださいhere

0

これは動作します。まず、取得メソッドを使用してクライアントのIPアドレスを取得し、ポストメソッドを使用して送信します。

<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> 
関連する問題