我使用 ajax 将 JSON 字符串 POST 到 Python Flask,但出现以下错误:
这是我的 JavaScript:
$.ajax({
type: 'POST',
url: window.location.href,
data: JSON.stringify(questionObj0),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}).done(function(msg) {
console.log(msg);
});
这是我的 Python:
@app.route('/test', methods=['GET', 'POST'])
def test():
question = request.get_json()
question1 = json.loads(question)
print (question)
return render_template('test.html')
使用 print(question) 会产生以下输出(使用浏览器控制台在 JavaScript 中进行测试时的输出相同):
{'questionNumber': 1, 'question': 'Convert 10110001 to decimal', 'answer': 177, 'userAnswer': 'blank'}
据我了解,输出应该是一个字符串,因此用引号填充。
有人遇到过类似的事情/知道如何解决这个问题吗?
最佳答案
Flask 的 request.get_json()
从请求中提供的 JSON 数据返回一个 dict
对象,因此您不需要调用 json.loads
再一次。
app.py
@app.route('/', methods=['GET'])
def index():
return render_template('index.html')
@app.route('/test', methods=['POST'])
def test():
question = request.get_json()
print(question['question'])
return ''
templates/index.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var questionObj0 = {'questionNumber': 1, 'question': 'Convert 10110001 to decimal', 'answer': 177, 'userAnswer': 'blank'};
console.log(JSON.stringify(questionObj0));
$.ajax({
type: 'POST',
url: '{{ url_for('test') }}',
data: JSON.stringify(questionObj0),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}).done(function(msg) {
console.log(msg);
});
</script>
关于javascript - 使用 JSON 将 Javascript 对象发送到 Python Flask 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266786/