@Stung
Программист

Скрипт ajax перезагружает страницу?

Есть форма, которая отправляет данные в базу, все отправляется скрипт ajax работает, но страница все же перезагружается. Как сделать чтобы она не перезагружала страницу. Если кто знает, покажите на примере кода, пожалуйста.

Сама форма:
<form id="form" enctype="multipart/form-data">
        <textarea type="text" name="text" id="text" placeholder="Ваш текст..." class="text1"></textarea>
        <button type="submit" name="submit" id="submit" class="submit" style="border: 0;" return false;><img class="im1" src="/default/отправить.png"></button>
      </form>


Код ajax:
<script>

$('#form button[type=submit]').click(function() {

    $.ajax({

        type: 'POST',

        url: 'chat.php',

        data: $('#form').serialize() + '&' + this.name + '=' + this.value,

        success: function(data) {

            console.log(data);

        }

    });

});

</script>
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Обрабатывать нужно не клик по кнопке сабмит, а событие сабмит на форме.
И в обработчике делать preventDefault().
form.on('submit', function(evt) {
  evt.preventDefault()
  $.ajax({})
}


Ну а если "религия" не позволяет делать правильно, то кнопка не должна быть типом сабмит, а должна быть type="button". Тогда клик по ней не будет отправлять форму и страница не будет перезагружаться.
Ответ написан
DanArst
@DanArst Куратор тега JavaScript
Гриффиндор в моде при любой погоде!
К чему у кнопки return false;?
Обработчик должен слушать событие отправки формы, а не нажатия кнопки, причем с методом preventDefault.
Причем непонятно, когда у вас подключается jquery (и подключается ли он вообще) и где находится скрипт, поэтому стоит обернуть обработчик в $(document).ready, чтобы дождаться загрузки страницы.
$(document).ready(function() {
       $('#form').submit(function(e) {
       e.preventDefault();
            $.ajax({
        
                type: 'POST',
        
                url: 'chat.php',
        
                data: $('#form').serialize() + '&' + this.name + '=' + this.value,
        
                success: function(data) {
        
                    console.log(data);
        
                }
            });
        }); 
    });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы