繁体   English   中英

在 Flask 中将带有 Jquery 和 JSON 的 Javascript 数组从客户端传递到服务器端

[英]Pass Javascript array with Jquery and JSON from client-side to server side in Flask

我试图将一个 Javascript 数组从客户端传递到服务器端(Flask)。 我的代码似乎适用于整数和字符串。 当我尝试使用完全相同的代码发送数组时,我得到None

服务器端代码:

@app.route("/route1", methods=['GET', 'POST'])
def route1():

    a = request.args.get('post')
    result = json.dumps(a)
    print(a)
    print(result)

客户端:

$SCRIPT_ROOT = {{ request.script_root | tojson | safe }};

var x = ["test", "test2"];

function newFunction() {

    console.log(x)
    $.getJSON($SCRIPT_ROOT + '/route1', { post: x },
        function (data) {
            var response = data.result;
            console.log(response);
        }

    )
};

正如我之前所说,当x被简单地分配一个字符串或一个整数时,这似乎完美地工作。 当试图通过这个数组时,我的两个打印语句分别得到NoneNULL 如何正确地将数组传递到服务器端?

你可以试试下面的代码。 它会起作用。 当您将数组作为参数传递时。 因为 request.args 是 MultiDict 实例

request.args.getlist(Key)

或者您应该尝试将您的数组转换为 Json 并将 json 传递给服务器。 您可以使用以下方法转换json

JSON.stringify()

您可以使用的服务器端

data = request.get_json()

是的,我也无法使用$.getJSON工作......

这是一个经过测试的$.ajax解决方案:

    <script>
    $SCRIPT_ROOT = {{ request.script_root | tojson | safe }};
    var x = ["test", "test2"];
        function f1(){
            $.ajax({
                type: "POST",
                url: $SCRIPT_ROOT + "/route1",
                contentType: "application/json",
                dataType: "JSON",
                data: JSON.stringify(x)
            });
        };
    </script>

我用这样的按钮触发它:

    <button id="testing" name="testing" onclick="f1();">testing</button>

和烧瓶代码:

@bp.route("/route1", methods=['GET', 'POST'])
def route1():
    a = request.get_json()
    print(a)
    return "hello, world"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM