Передайте массив Javascript с Jquery и JSON со стороны клиента на сторону сервера в Flask - PullRequest
1 голос
/ 31 января 2020

Я пытаюсь передать массив 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 просто назначается строка или целое число. При попытке пройти через этот массив я получаю None и NULL для моих двух операторов печати соответственно. Как правильно пройти через массив на стороне сервера?

Ответы [ 2 ]

1 голос
/ 31 января 2020

Да, я не смог заставить это работать, используя $.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>

И код Flask:

@bp.route("/route1", methods=['GET', 'POST'])
def route1():
    a = request.get_json()
    print(a)
    return "hello, world"
1 голос
/ 31 января 2020

вы можете попробовать ниже код. это будет работать. как вы передаете массив в качестве параметра. так как request.args является экземпляром MultiDict

request.args.getlist(Key)

Или вы должны попытаться преобразовать ваш массив в Json и передать json на сервер. Вы можете использовать метод ниже для преобразования json

JSON.stringify()

Серверная сторона, которую вы можете использовать

data = request.get_json()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...