始终在$ http.post中传递Post变量

时间:2016-07-18 21:00:22

标签: javascript angularjs

我的angularjs代码中有大约70个。其中大约65个发送authtoken变量。

$http.post("/url", { name: $scope.name, authtoken:localStorage['authtoken']});

我记得在某个地方看到它可能是有益的,所以它通过我的所有$http.post来电通过authtoken作为默认值,所以我不必每次都输入它。

这是个好主意吗?如果是这样,有谁知道我将如何实现它?只是寻找一些见解并被推向正确的方向。

2 个答案:

答案 0 :(得分:1)

您可以像这样使用Interceptors

angular.module('app').config(function($httpProvider) {
  $httpProvider.interceptors.push(function() {
    return {
      request: function(req) {
        if(req.method.toUpperCase() === 'POST') {
            if(typeof req.data === 'object') {
                req.data = req.data || {};// typeof Null is 'object' since the beginning of JavaScript
                req.data['authtoken'] = localStorage['authtoken'];
            } else {
                req.data += '&authtoken='+localStorage['authtoken']
            }
        }
        return req;
      }
    };
  }
});

我希望这会对你有所帮助。

答案 1 :(得分:0)

考虑使用jQuery.ajaxSetup()
这里是API https://api.jquery.com/jQuery.ajaxSetup/
您可以设置ajax全局处理程序ajaxStarhttps://api.jquery.com/ajaxStart/

并通过添加authtoken修改传递的数据 这篇文章差不多关于http://weblogs.asp.net/hajan/simplify-your-ajax-code-by-using-jquery-global-ajax-handlers-and-ajaxsetup-low-level-interface