繁体   English   中英

无法从JQUERY向python发送JSON数据

[英]Unable to send JSON data to python from JQUERY

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

我能够从javascript发送和接收字符串到Python,但是现在当我尝试从javascript发送JSON数据到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类的Internal Server Error并且当我尝试使用Ajax时,它说BAD Request

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

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

因为$.get(..., { intt: XXX })期望使用字符串代替XXX而不是对象,所以您会遇到问题。

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

{ intt: JSON.stringify(intent) }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM