AJAX - запрос «POST» выполняет сначала запрос «GET», а затем запрос «POST» - PullRequest
0 голосов
/ 07 декабря 2018

Я работаю над проектом RoR и JavaScript и использую AJAX-запрос для отправки формы.У меня есть запрос POST на отправку, но сначала он выполняет запрос GET.Форма очищается и страница перезагружается.

URL-адрес изменяется с http://localhost:3000/beers на http://localhost:3000/beers?utf8=%E2%9C%93&authenticity_token=HVoHQ8WEZdIfVEvBcWJU5XT0dIiV2QL0B%2B2XeaY5m9g69A4yYWFxmx%2B4qiv2qPqx%2BJe3pphvtGT0oZhlWNTw3A%3D%3D&beer%5Bname%5D=Fat+Tire&beer%5Bbrewery_attributes%5D%5Bname%5D=New+Belgium+Brewing+Company&beer%5Bbeer_type%5D=Red+Ale+-+American+Amber+%2F+Red&beer%5Bibu%5D=22&beer%5Babv%5D=5.2%25&commit=Create+Beer.

Я нажимаю кнопку отправки еще раз (с пустой формой), а затем он выполняет запрос POST и работает как следует. Он не делает это каждый раз , что меня действительно смущает.Я удалил файлы cookie, перезапустил сервер и попробовал другой браузер.Никто не устранил проблему.Если у кого-то есть понимание, я очень признателен за помощь.Заранее спасибо.

Мой запрос AJAX:

$(function() {
    // new beer request
    $('#new-beer-form').on("submit", function(e) {
        $.ajax({
            url: this.action,
            method: "POST",
            data: $(this).serialize(),
            success: function(response) {
                var $ol = $("div.beers ol")
                $ol.append(response);
            },
            error: function(response) {
                alert("Please fill out all criteria.");
            },
        });
        e.preventDefault();
    })
})

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Можете ли вы проверить, определена ли кнопка, которую вы используете для отправки, как <button>?Если да, он должен иметь атрибут type="button", так как по умолчанию он будет "submit" действие при нажатии, как ответили здесь:

Какой смысл ?

0 голосов
/ 08 декабря 2018

Итак, похоже, проблема заключалась в моем gemfile.Я использовал камень turbolinks, когда не должен был быть.Как только я прошел необходимые шаги, чтобы удалить его из моего проекта, он начал работать правильно, последовательно.

Для тех, у кого есть подобная проблема, вот действительно полезная и простая статья по теме: http://codkal.com/rails-how-to-remove-turbolinks/.

Спасибо всем, кто помог мне.

0 голосов
/ 07 декабря 2018

Я думаю, что ваш e.preventDefault () должен быть перемещен в самое начало обратного вызова функции on.Submit.До запроса AJAX.Я думаю, что происходит то, что действие по умолчанию (отправка запроса get) не предотвращается во времени.

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