如何在Angular中使用请求标头执行ajaxpost

我在jquery中有一个工作代码,我使用request.setRequestHeader("X-CSRF-Token", $.cookie('token'));在表单中使用令牌发布数据request.setRequestHeader("X-CSRF-Token", $.cookie('token')); 。 我知道如何使用ng-model将表单数据转换为$scope ,但是如何将下面的submit_this()函数转换为角度兼容函数?

Jquery代码:

 $("body").on("click", "#login", function() { var url = "http://localhost/lab/theapp/api/user/login.json"; var name = $('#user').val(); var pass = $('#pass').val(); var data = 'username=' + encodeURIComponent(name) + '&password=' + encodeURIComponent(pass); var type = "post"; submit_this(type,data,url); }); //the function that need to be re-written for AngularJs function submit_this(type,data,url) { try { $.ajax({ url: url, type: type, data: data, dataType: 'json', beforeSend: function (request) { request.setRequestHeader("X-CSRF-Token", $.cookie('token')); }, error: function(XMLHttpRequest, textStatus, errorThrown) { }, success: function (data) { if (data.sessid){ var sessid = data.sessid; var session_name = data.session_name; var token = data.token; jQuery.cookie("token", token); } console.log(data); } }); } catch (error) { console.log(error) } return false; } 

您可以使用$ http服务来执行此操作。 您最好创建自己的服务,演示代码:

 var demoApp = angular.module("DemoApp"); demoApp.controller("yourcontroller", function($scope, yourService){ yourService.postData("http://your/url", {"X-CSRF-Token": $scope.token}) .success(function(data){ //handle success response here }).error(function(error){ //handle error response here }); }); demoApp.service("yourService", function($http){ this.postData = function(url, _headers){ return $http({ method: "POST", url: url, headers: _headers }); }; }); 

这是angular $ http文件。