为什么我的烧瓶应用程序可以';从javascript接收json吗?

为什么我的烧瓶应用程序可以';从javascript接收json吗?,javascript,python,json,flask,Javascript,Python,Json,Flask,我尝试将json数据从JavaScript发送到flaskapp。但是flask不接受从JavaScript发送的json数据,请求为null,错误在哪里 这是我的密码 @main.route('/getjson', methods = ['GET', 'POST']) def getjson(): a = request.json return jsonify(user = a) 这是我的javascript代码 $(function(){ $("#test").cl

我尝试将json数据从JavaScript发送到flaskapp。但是flask不接受从JavaScript发送的json数据,请求为null,错误在哪里

这是我的密码

@main.route('/getjson', methods = ['GET', 'POST'])
def getjson():
    a = request.json
    return jsonify(user = a)
这是我的javascript代码

$(function(){
    $("#test").click(function(){
        $.ajax({
            url: "{{ url_for('main.getjson') }}",
            type: "POST",
            data: JSON.stringify({
                "n1": "test1",
                "n2": "test2",
                "n3": "test3"
            }),
            dataType: "json",
            success: function(data){
                var a = data.user
                var texthtml = "<p>" + a + "</p>"
                $("#result").html(texthtml)
            }
        });
    });
});
$(函数(){
$(“#测试”)。单击(函数(){
$.ajax({
url:“{url_for('main.getjson')}}”,
类型:“POST”,
数据:JSON.stringify({
“n1”:“test1”,
“n2”:“test2”,
“n3”:“test3”
}),
数据类型:“json”,
成功:功能(数据){
var a=data.user
var texthtml=“”+a+”

“ $(“#结果”).html(texthtml) } }); }); });
页面上返回的数据始终为空。
Request.arg.get也不起作用。

Flask的
Request.json
需要
application/json
内容类型,但
$。默认情况下,ajax
设置
application/x-www-form-urlencoded
。在发出请求时设置内容类型

$.ajax({
        url: "{{ url_for('main.getjson') }}",
        type: "POST",
        data: JSON.stringify({
            "n1": "test1",
            "n2": "test2",
            "n3": "test3"
        }),
        contentType: "application/json",
        dataType: "json",
        success: function(data){
            var a = data.user
            var texthtml = "<p>" + a + "</p>"
            $("#result").html(texthtml)
        }
    });
这将以表单编码的形式发送数据,因此您可以使用Flask中的
request.form
读取数据

dataType
是您希望从服务器接收的数据类型,而
contentType
是您发送到服务器的数据类型

见:

  • (部分:内容类型)
$.ajax({
        url: "{{ url_for('main.getjson') }}",
        type: "POST",
        data: {
            n1: "test1",
            n2: "test2",
            n3: "test3"
        },
        dataType: "json",
        success: function(data){
            var a = data.user
            var texthtml = "<p>" + a + "</p>"
            $("#result").html(texthtml)
        }
    });