使用AngularJS发送POST请求并在Flask后端获取参数
我在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。