2017-02-28 117 views
0

我正在使用Angular AJAX調用將數據發送到我的Flask後端以進行自然語言處理。Python Flask從AngularJS檢索POST數據AJAX

AJAX代碼:

$scope.processText = function(){ 

    $http({ 
     method: "POST", 
     url: "http://127.0.0.1:5000/processText", 
     headers: { 
      'Access-Control-Allow-Origin': '*', 
      'Content-Type': 'application/json', 
     }, 
     data: { 
      'message': "this is my message", 
     } 
    }).then(function successCallback(response){ 
     console.log(response.data) 
     $scope.message = ""; 
    }); 
} 

我能夠檢索對象{消息:「這是我的消息」},但遺憾的是我不能鍵入request.data.message訪問密鑰。

瓶路線

@app.route('/processText', methods=['POST']) 

def analyzeText(): 
    if request.method == "POST": 

     data = json.loads(request.data) 
     return data   #error : "dict is not callable" 
     return data.message #error : "'bytes' object has no attribute 'message'" 

回答

1

這應該爲你工作。

from flask import jsonify, request 
... 
message = request.json['message'] 
return jsonify({'some_message':message}) 

如果你感到困惑,你不能互換使用Python request.json.messagerequest.json['message']。後者是唯一的選擇。它將在Django模板中工作,但這是另一回事。

https://www.tutorialspoint.com/python/python_dictionary.htm

+0

它就像一個魅力!非常感謝! – Danzeeeee

1

您需要使用jsonify返回對象,因爲jsonify創建自動具有Content-Type頭一個flask.Response()對象。

嘗試使用這樣的:return jsonify(data)

另外,如果你想返回字符串(消息的值),你可以繼續前進,返回值,就像任何字典值即return data['message']