无法从JQUERY将JSON数据发送到python

时间:2018-04-13 10:27:52

标签: javascript python jquery json flask

我正在尝试在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

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

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

1 个答案:

答案 0 :(得分:1)

您将收到此问题,因为$res = $client->request( 'GET', [ 'auth' => [ 'login', 'pass' ], 'cookies' => $jar, 'allow_redirects' => true ] ); 需要一个字符串代替$.get(..., { intt: XXX }),而不是一个对象。

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

XXX

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

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