javascript - 使用 JSON 将 Javascript 对象发送到 Python Flask 时出错

标签 javascript python json ajax flask

我使用 ajax 将 JSON 字符串 POST 到 Python Flask,但出现以下错误:

Error

这是我的 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/

相关文章:

javascript - 脚本完成后修改动态元素

python - 如何将 HTTP 服务器作为服务生成,并能够在必要时停止它?

运行测试时不导入 Python 嵌套子包

c++ - BOOST ASIO POST HTTP REQUEST——标题和正文

javascript - React 更改组件顺序不会触发重新渲染

javascript - 如何循环创建带有链接的列表?

python - 在 pyparsing 期间更改字符串

java - 400 Bad request 在 Spring Controller 中将嵌套 json 对象映射到 java.util.Map 时出错

json - 使用 angularjs 进行 django-rest 分页

JavaScript 如何从作为参数传递的对象访问变量?