Почему страница перезагружается при загрузке файла с помощью ajax?

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

HTML:

 <form enctype = "multipart/form-data">
    <input type = "file" accept = ".xlsx" id = "file-upload" name = "file"/>
    <input id = "form_submit"  value = "Upload" type = "submit"                           name = "form_submit"/>
    </form>

JQuery:

 $('#form_submit').on('click', function() {
    var file_data = $('#file-upload').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file', file_data);
    $.ajax({
    url: 'file_upload_parser.php', // point to server-side PHP script 
    dataType: 'text',
    cache: false,
    contentType: false,
    processData: false,
    data: form_data,                         
    type: 'post',
    success: function(data){
    alert(data);
    }
    });
    });

PHP:

 if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' .  $_FILES['file']['name']);
    echo "Sucess";
    }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
790
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Просто измените тип ввода «отправить» на «кнопка». Поскольку тип ввода «отправить» имеет поведение по умолчанию для отправки формы. Если вы измените тип ввода на «кнопка», а тип «кнопка» не будет иметь поведения по умолчанию.

<input id = "form_submit" value = "Upload" type = "submit" name = "form_submit"/> 

К

<button id = "form_submit"  value = "Upload" type = "button" name = "form_submit">Upload</button>

Если вы хотите сделать это с помощью jquery, просто внесите некоторые изменения в функцию jquery, и вы можете предотвратить поведение кнопки отправки по умолчанию, как показано ниже.

$('#form_submit').on('click', function(e) {
    e.preventDefault();
    var file_data = $('#file-upload').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file', file_data);
    $.ajax({
    url: 'file_upload_parser.php', // point to server-side PHP script 
    dataType: 'text',
    cache: false,
    contentType: false,
    processData: false,
    data: form_data,                         
    type: 'post',
    success: function(data){
    alert(data);
    }
    });
    });

и вы можете использовать

<input id = "form_submit" value = "Upload" type = "submit" name = "form_submit"/> 

Используйте метод jQuery event.preventDefault().

Не так

$("#form_submit").click(function(event){ 
  // Your upload code here     
  event.preventDefault();
});

Используйте как это

$("#form_submit").click(function(event){      
  event.preventDefault();
  // Your upload code here
});

Поместите event.preventDefault() в верхнюю часть функции, чтобы предотвратить поведение по умолчанию, затем напишите свой код.

Другие вопросы по теме