【问题标题】:HighCharts query parameters issue with Flask webserviceFlask webservice 的 HighCharts 查询参数问题
【发布时间】:2023-03-23 18:18:01
【问题描述】:

我有一个 HighCharts 客户端,其职责是从 Web 服务加载数据并显示图表。请求数据的函数如下所示:

function requestData() {
    $.ajax({
        url:  'http://myhost.com/type?x=1&y=2&z=3',
        headers: { 
          Accept : "application/json"
        },
        type: "GET",
        dataType: "json",
        success: function(data) {
          //do something
        },
        cache: true
    });
}

(以后会动态生成url属性)

目标 web 服务是只读的,并使用 Flask 微框架实现:其目的是将 JSON 数据返回给 HighCharts 客户端。这是处理数据请求的 Flask 视图(函数):

@app.route('/<type>')
def get_data(type):

    x = request.args.get('x','')
    y = request.args.get('y','')
    z = request.args.get('z','')

    [...]

问题:当我在 Chrome 中执行 javascript 代码时,会向 webservice 发送以下 HTTP 请求:

GET /type?x=1&amp;y=2&amp;z=3 HTTP/1.1  // '&' have been escaped to '&amp;'
Host: myhost.com
Connection: keep-alive
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
Accept: application/json
Referer: http://myhost.com/chart.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

...我从服务器得到一个 404 状态代码(错误请求),当一个或多个请求的查询参数为空或格式错误时,这是​​非常好的和预期的:

HTTP/1.0 400 BAD REQUEST
Content-Type: text/html; charset=utf-8
Content-Length: 16
Server: Werkzeug/0.8.3 Python/2.7.3
Date: Wed, 14 Nov 2012 10:23:49 GMT

在我的 Flask 网络服务上调试后,我注意到只有 x 查询参数(请注意是 HTTP 请求中的第一个参数)被正确解析,而 y 和 @987654328 @ 是 空字符串,这会导致 404。

为什么会这样?关于 &amp;amp; -> &amp;amp; 转义的任何字符集不一致?

谢谢,任何提示都会有真正的帮助(请问您是否需要更多规范或代码)

【问题讨论】:

    标签: javascript python character-encoding highcharts flask


    【解决方案1】:

    我认为错误与您预期的转义 & 符一样。

    试试这个:

    function requestData() {
        $.ajax({
            url:  'http://myhost.com/type',
            headers: { 
              Accept : "application/json"
            },
            data: {
                x: 1,
                y: 2,
                z: 3
            },
            type: "GET",
            dataType: "json",
            success: function(data) {
              //do something
            },
            cache: true
        });
    }
    

    【讨论】:

    • 像魅力一样工作 :-) 谢谢,由于我对 jQuery 的了解不足,我很确定这一定很愚蠢
    猜你喜欢
    • 2012-08-03
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2019-07-27
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多