【问题标题】:Unable to send JSON data to python from JQUERY无法从 JQUERY 向 python 发送 JSON 数据
【发布时间】:2018-04-13 10:27:52
【问题描述】:

我正在尝试在 Flask-python 中构建一个聊天机器人,它需要与 javascript 交互以连接到 URL 以获取数据。

我能够从 javascript 向 Python 发送和接收字符串,但现在我在尝试将 JSON 数据从 javascript 发送到 python 时遇到问题。

我尝试了多种方法,例如在 JS 中使用 ajax 调用和在 python 中使用 request.json,但均未成功。

下面是我使用发送字符串的代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
    function getBotResponse(rawText) {
        $.getJSON('https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/', {q: rawText}, 
            function(jsndata) {
            var intent = jsndata.topScoringIntent.intent;
                }
                $.get("/get", { intt: intent }).done(function(data) 
                    {
                        $('<div class="botText">'+data+'</div>').insertBefore('.msg_push');
                        $('.chat_body').scrollTop($('.chat_body')[0].scrollHeight);
                    }
                );
            }
        );
    }
</script>

下面是接收字符串并返回答案的python代码:

from flask import Flask, render_template, request
@app.route("/get")
def get_bot_response():
    jsondata = request.args.get('intt')
    print(type(jsondata))
    print(jsondata)

这工作正常,但是当我尝试以相同的方式发送 json 时,我收到了Internal Server Error 之类的错误,当我尝试使用 ajax 时,它说BAD Request

我如何通过变量将 json 数据从 javascript 发送到 python?

注意:我熟悉在 python 中使用 urllib 请求/https 请求方法来连接到 URL 并获取 json 数据,但我公司的政策不允许这样做,所以需要找到一些方法可以从 javascript 发送数据。

【问题讨论】:

  • 你导入jquery两次,删除一个链接试试
  • 您可以将其字符串化并发送,在另一端进行解析。

标签: javascript python jquery json flask


【解决方案1】:

你会遇到这个问题,因为$.get(..., { intt: XXX }) 需要一个字符串来代替XXX,而不是一个对象。

解决这个问题的最简单方法是使用JSON.stringify

{ intt: JSON.stringify(intent) }

然后在 Python 中从字符串中解析 JSON

当然,更好的方法是发布 JSON,而不是将其作为 URL 查询传递。 URL 查询可能有长度限制和速度限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2018-08-11
    • 2017-05-02
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多