我正在尝试在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。
答案 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查询可能有长度限制和速度限制。