Как вернуть строку в функцию успеха Ajax - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу вернуть строку после выполнения моего кода ajax. Вот так выглядит мой код в моем html:

<script>
    (function($){
        $('#form').submit(function(event){
            var formData = new FormData($("#form")[0]);
            event.preventDefault();
            $.ajax({
                url: "/transform",
                type: "POST",
                data: formData,
                success: function(data){
                    data
                },
            });     
        });
    });(jQuery);
</script>

В основном я хочу отобразить строку, которую метод /transform вернет после завершения, что-то вроде «Готово!», Я хочу видеть это сообщение в localhost:5000, а не в консоли.

Чтобы выполнить мой код, я получаю доступ к localhost:5000, однако, когда отображается сообщение, возвращаемое /transform, URL-адрес localhost:5000/transform, что заставляет меня думать, что ajax не работает.

Насколько я прочитал, с помощью Ajax мой код выполняется асинхронно, поэтому он не может автоматически получить доступ к возвращению /transform. Я читал об обратных вызовах, но все еще не понимаю, как я могу его использовать, я очень новичок в этом (я начал вчера, и я впервые использую html и js).

Я также проверил этот вопрос и ответ Как я могу вернуть ответ от асинхронного вызова? но все же я не вижу, как вставить в мой код обратный вызов, о котором они говорят.

Есть ли способ сделать это?

Это HTML-код, который я использую:

<html>
<body>
    {% block content %}{% endblock %}
    <div class="container">
    <div class="col-md-6 center">
        <div class="panel panel-default">
                <div class="panel-body">
                <form accept-charset="UTF-8" role="form" action="/transform" method="post" enctype="multipart/form-data" id="form" >        
                    <div class="panel-heading">

                        <h3 class="panel-title" style="text-align:center">Select a file</h3>
                    </div>
                    <fieldset>
                        <div class="form-group">
                        <input class="form-control" type="file" name="data_file" />
                    </div>
                    <input class="btn btn-lg btn-success btn-block" type="submit" name="submit" id="submit" value="Submit" placeholder="submit"/>
                </fieldset>
                </form>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

В зависимости от ваших целей, это, вероятно, не то, что вы хотите для своего долгосрочного решения, но, учитывая, что вы только начинаете, я думаю, будет хорошо увидеть, как это работает.

Предполагая, что вы получаете data без каких-либо проблем, вы можете отобразить его в DOM, используя jQuery в качестве посредника. Например, вы можете добавить <div id="confirmationMessage"></div> везде, где вы хотели бы показать сообщение в вашем HTML. Затем вы можете использовать jQuery для помещения текста в DOM следующим образом:

success: function(data) { 
    $('#confirmationMessage').text(data)
}
0 голосов
/ 07 ноября 2018

Прежде всего, как прокомментировал Робин Зигмонд, в вашем скрипте есть синтаксическая ошибка, которая мешает его работе. Так что ваши опасения, если ваш сценарий выполняется, были правильными. Последняя строка вашего скрипта должна выглядеть так

})(jQuery);

(точка с запятой удаляется между закрытием и открытием паратеза)

Вы заметите такие вещи в консоли разработчика (F12 в большинстве браузеров), как я уже упоминал в комментариях. Вы также увидите вывод console.log, который очень удобен для отладки JavaScript.

Во-вторых, чтобы отобразить свой ответ, вы можете сделать что-то вроде этого

success: function(data) { 
    $('#form').prepend( "<p>" + data + "</p>" );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...