从JQuery到Python Flask的GET请求

时间:2017-09-09 23:06:02

标签: jquery python json http flask

我正在寻找从HTML页面中的JQuery基本脚本到使用Flask的Python脚本发出GET请求。

我的东西(在同一个本地网络上):

  • 使用Python 2.7的RaspberryPi 2B +,用作Web服务器的Flask的virtualenv(apache2)

  • 使用Firefox 55.0.3作为Web客户端的Windows PC

我可以使用cURL在本地计算机上执行我的请求:

screen of the cURL command line request to Flask

这是我用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旁边。

因此,当我启动我的网页时,结果如下:

Request to Flask via JQuery

请求似乎很好,但响应表明SyntaxError:JSON.parse ...

首先,我没有设法解决这个问题。 但是,令人惊讶的是,当我通过这里的Firefox Dev工具执行此请求时,它可以工作!我们可以看到响应中的JSON数据。

Request to Flask with FFDevTool

我不知道为什么它适用于FF Dev Tool,而不是JQuery示例。 我注意到FF Dev Tool在标题中添加了2个选项(用于no-caching),我将它添加到我的JQuery请求中,但这不是原因。 有人能帮我吗 ? 提前谢谢你:)

0 个答案:

没有答案