Ajax Успех не сработает - PullRequest
0 голосов
/ 25 апреля 2020

При отправке формы я хотел сообщить пользователю, что ajax был успешно выполнен. Мой ajax выглядит следующим образом:

  $(function() {
            $('#submit').click(function (e) {
                var url = "{{ url_for('handle_data') }}"; // send the form data here.
                var form_data = new FormData($('#mainform')[0]);
                $.ajax({
                    type: "POST",
                    url: url,
                    data: form_data, // serializes the form's elements.
                    success: function () {
                        alert('success!!');
                    }
                });
                 e.preventDefault(); // block the traditional submission of the form.
            });

             // Inject our CSRF token into our AJAX request.
            $.ajaxSetup({
                beforeSend: function(xhr, settings) {
                    if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
                        xhr.setRequestHeader("X-CSRFToken", "{{ form.csrf_token._value() }}")
                    }
                }
            });
        });

А на бэкэнде мой flask:

@app.route('/handle_date', methods=['GET', 'POST'])
def handle_data():
    """
    :return:
    """
    print("hi there")
    return ""

Я никогда не смогу запустить это сообщение об успешном завершении.

1 Ответ

0 голосов
/ 25 апреля 2020

Сервер не получает JSON, это FormData. И для jQuery для отправки FormData требуется

$.ajax({
    type: "POST",
    url: url,
    data: formData,

    // these three additional parameters
    processData: false,
    contentType: false,
    dataType: "json"
})

Второе редактирование, которое я сделал, было на бэкэнде, при возврате ответа от flask Я должен был обернуть его в jsonify для ajax Успешный запуск

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