使用AngularJS发送POST请求并在Flask后端获取参数

4 投票
1 回答
11398 浏览
提问于 2025-04-18 03:24

我在AngularJS中有这段代码:

myApp.controller('LoginCtrl', function($scope, $http){
  $scope.formData = {};

  $scope.doLogin = function(url, pass){
    $http({
      url: url,
      method: "POST",
      data: $.param($scope.formData)
    }).success(function(data) {
      console.log(data)
    });
  }
});

在后端(Flask)我有这段代码:

def user_authenticate():
    login = request.args.get('login')
    password = request.args.get('password')
    print login, password

问题是,request.args是空的。

1 个回答

9

更新

在遇到很多问题后,我通过另一个Stackoverflow的回答解决了这个问题。所以,我得到了以下代码:

ANGULARJS

$scope.doLogin = function(url, pass){
    $http({
      url: url,
      method: "POST",
      headers: { 'Content-Type': 'application/json' },
      data: JSON.stringify(data)
    }).success(function(data) {
      console.log(data)
    });
 }

FLASK

def view_of_test():
    post = request.get_json()
    param = post.get('param_name')

旧版本

我刚刚意识到我需要把我的代码改成这样:

AngularJS:

myApp.controller('LoginCtrl', function($scope, $http){
  $scope.formData = {};

  $scope.doLogin = function(url, pass){
    $http({
      url: url,
      method: "POST",
      data: $.param($scope.formData),
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    }).success(function(data) {
      console.log(data)
    });
  }
});

只需添加'Content-Type'这个头信息。

Flask:

def user_authenticate():
    login = request.form.get('login')
    password = request.form.get('password')
    print login, password

不要使用request.args,而是用request.form。

撰写回答