我正在寻找从HTML页面中的JQuery基本脚本到使用Flask的Python脚本发出GET请求。
我的东西(在同一个本地网络上):
使用Python 2.7的RaspberryPi 2B +,用作Web服务器的Flask的virtualenv(apache2)
使用Firefox 55.0.3作为Web客户端的Windows PC
我可以使用cURL在本地计算机上执行我的请求:
这是我用Python处理请求的基本脚本:
#!flask/bin/python
from flask import Flask, jsonify
import MySQLdb
from pprint import pprint
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
@app.route('/get_configuration', methods=['GET'])
def get_configuration():
db = MySQLdb.connect(host="localhost", user="user", passwd="pass", db="db")
cur = db.cursor()
cur.execute("SELECT mode, threshold FROM configuration;")
res = cur.fetchall()
tab = res[0]
db.close()
return jsonify(mode=tab[0], threshold=tab[1])
# [...]
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
这是我的网页:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({
url : 'http://192.168.1.21:5000/get_configuration',
type : 'GET',
dataType : 'json',
success : function(code_html, statu){
alert("ok");
},
error : function(result, status, error){
alert("error");
},
complete : function(result, status){
alert("complete");
}
});
});
});
</script>
<button>Get External Content</button>
</body>
</html>
编辑:我的网页目前托管在Windows PC上的WampServer上,用于开发和测试,尚未安装在RapsberryPi上,因此不在Flask旁边。
因此,当我启动我的网页时,结果如下:
请求似乎很好,但响应表明SyntaxError:JSON.parse ...
首先,我没有设法解决这个问题。 但是,令人惊讶的是,当我通过这里的Firefox Dev工具执行此请求时,它可以工作!我们可以看到响应中的JSON数据。
我不知道为什么它适用于FF Dev Tool,而不是JQuery示例。 我注意到FF Dev Tool在标题中添加了2个选项(用于no-caching),我将它添加到我的JQuery请求中,但这不是原因。 有人能帮我吗 ? 提前谢谢你:)