2014-04-19 66 views
4

我有這樣的代碼在AngularJS:發送帶有Angularjs POST請求,並得到參數在燒瓶中後端

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

而在beckend(瓶),我有這樣的:

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

的問題在於request.args是空的。

回答

9

UPDATE

有很多的問題,之後這個問題,我解決了使用另一個答案#1。所以,我得到這個代碼:

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' 頭。

瓶:

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

而不是使用request.args中,使用的request.form。

+2

這是因爲'request.args'只包含url參數(所以'''後面的所有內容),'request.form'包含POST字段。 –

+0

Humm很高興知道!我現在只是拿Flask =) – rafaels88