要在Flask中从Javascript获取数据到Python,您需要使用AJAX POST请求或AJAX GET请求,并将您的数据传递给它们。
Flask 有六种可用的HTTP方法,我们只需要GET和POST。两者都将jsdata
作为参数,但以不同的方式获取它。这就是像Python和Javascript这样的两种完全不同的语言在两个不同的环境中交换数据的方式。
首先,在Flask中实例化一个GET路由:
@app.route('/getmethod/<jsdata>')
def get_javascript_data(jsdata):
return jsdata
或者一个POST请求:
@app.route('/postmethod', methods = ['POST'])
def get_post_javascript_data():
jsdata = request.form['javascript_data']
return jsdata
第一个可以通过以下方式使用 /getmethod/<javascript_data>
和一个 AJAX GET 进行访问:
$.get( "/getmethod/<javascript_data>" );
通过使用 AJAX POST 请求的第二种方法:
$.post( "/postmethod", {
javascript_data: data
});
其中,javascript_data
可能是一个 JSON 字典或简单值。
如果你选择了 JSON,请确保在 Python 中将其转换为字典:
json.loads(jsdata)[0]
Eg.
GET:
@app.route('/getmethod/<jsdata>')
def get_javascript_data(jsdata):
return json.loads(jsdata)[0]
提交:
@app.route('/postmethod', methods = ['POST'])
def get_post_javascript_data():
jsdata = request.form['javascript_data']
return json.loads(jsdata)[0]
如果您需要完成相反的操作,将Python数据传递到Javascript,请创建一个简单的无参数GET路由,并返回一个JSON编码的字典:
@app.route('/getpythondata')
def get_python_data():
return json.dumps(pythondata)
从JQuery中检索它并解码:
$.get("/getpythondata", function(data) {
console.log($.parseJSON(data))
})
json.loads(jsdata)[0]
中的[0]
是因为在Python中解码JSON编码字典时,您会得到一个列表,其中包含单个字典,存储在索引0处,因此您的JSON解码数据如下所示:
[{'foo':'bar','baz':'jazz'}] #[0: {'foo':'bar','baz':'jazz'}]
因为我们只需要字典,而不是列表,所以我们要获取存储在索引0处的项,也就是字典。
此外,import json
。