Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310

Php скрипт по нажатию кнопки без перезагрузки

04.06.2023, 13:16. Показов 1341. Ответов 26

Студворк — интернет-сервис помощи студентам
Добрый день! На форме есть Input и есть кнопка для загрузки фото на сервер. Проблема в том что если я заполню input а потом загружаю фото через POST['submit'] то фото сохраняется на сервер а поле input становится пустым т.к. страница перезагружается. Приходится сначала загружать фото а потом заполнять поля и нажимать кнопку Добавить чтобы все сохранилось в БД. Как исправить код чтобы страница не перезагружалась и поле оставалось заполнено по нажатию кнопки с id="upload"?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<form method="post" action="do_insertdetails.php">
 <a href="Stock.php" style="display: flex; justify-content:right;">X</a>
         <h3 style="display: flex; justify-content:center;">Добавить деталь</h3>
         <table cellpadding="10" cellspacing="1">
          <tr>
           <td id="col3"> <select name="stellazh">
              <option>Стеллаж</option>
              <option>С1</option>
              <option>С2</option>
              <option>С3</option>
              <option>С4</option>
              <option>С5</option>
              <option>С6</option>
              <option>С7</option>
              <option>С8</option>
              <option>Временный</option>
            </select>
        </td>
        <td id="col3"> <select name="polka">
              <option>Полка</option>
              <option>П1</option>
              <option>П2</option>
              <option>П3</option>
              <option>П4</option>
              <option>П5</option>
              <option>Без полки</option>
              </select>
        </td>
        <td id="col3">
           <select name="korobka">
              <option>Коробка</option>
              <option>К1</option>
              <option>К2</option>
              <option>К3</option>
              <option>К4</option>
              <option>К5</option>
              <option>К6</option>
              <option>К7</option>
              <option>К8</option>
              <option>Без коробки</option>
              </select>
        </td>
        </tr>
  </table>
                     <p>
                     <input type="submit" name="submit" value="Добавить" style="display: block; margin:0 auto;"/>
                </p>
</form>
<h3 style="margin-top:10px">Загрузите фото</h3>
<!--------------Загрузка ФОТО------------------------------------------------->
<form metod="post" enctype="multipart/form-data" style="display:flex;">
 <input type="file"  name="image" required>
 <button type="button" id="upload" >Загрузить</button>
 </form>
JavaScript
1
2
3
4
5
6
7
8
9
10
<script>
$('#upload').on('click', function(){
$.ajax({
  url: 'upload.php',
  success: function(data) {
   alert('Success')
  }
 });
})
</script>
Миниатюры
Php скрипт по нажатию кнопки без перезагрузки  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2023, 13:16
Ответы с готовыми решениями:

Как запустить PHP скрипт по нажатию кнопки?
Здравствуйте! Уже несколько дней не могу решить вопрос, искал ответ в разных областях - не смог разобраться. Дайте ответ, либо...

Как запустить PHP скрипт по нажатию кнопки
Здравствуйте На HTML странице есть кнопка после нажатия которой надо запустить скрипт PHP после которого запускается bash...

Оценить значение поля (выполнить php-скрипт) без перезагрузки страницы
Приветствую. Есть форма (текстовое поле в ней и две кнопки). В текстовое поле вводится ответ на некоторый вопрос, который представлен выше...

26
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
05.06.2023, 13:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от bbkk Посмотреть сообщение
Код выкладывал ранее.
Да сделал все как у вас. сообщение появилось, но теперь оно постоянно отображается. Я вышел в другую страницу вернулся но все равно это сообщение висит, что файл успешно загружен. Возможно что то с сессией связано? Файл добавился и все это сообщение висит постоянно
Через раз при повторной загрузке фото просто переходит на страницу upload и написано echo "es"
0
Заблокирован
05.06.2023, 13:37
Цитата Сообщение от gena8208 Посмотреть сообщение
Я вышел в другую страницу вернулся но все равно это сообщение висит
После обновления оно не будет отображаться. Можно сделать отображение на несколько сек, если надо.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
    function foto_es() {document.querySelector('#es_foto').style.display = "none"};
    $("#form_2").on("submit", function(e){
        e.preventDefault();
        let formData = new FormData();
        formData.append("file", image.files[0]);
 
        $.ajax({
            url: 'upload.php',
            type: 'POST',
            data: formData,
            success: function (data) {
                if(data=='es') {
                    document.querySelector('#es_foto').style.display = 'block';
                    setTimeout(foto_es, 3000);
                }
            },
            cache: false,
            contentType: false,
            processData: false
        });
    });
</script>
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
05.06.2023, 14:05  [ТС]
Цитата Сообщение от bbkk Посмотреть сообщение
После обновления оно не будет отображаться.
Да. После того как фото загрузил и деталь добавил исчезает. А вот когда на эту форму повторно захожу это сообщение уже выведено. Простит если достал вас. Я вам могу ссылку на этот тестовый сайт дать и вы попробуете

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<h3 style="margin-top:10px">Загрузите фото</h3>
            <form id="form_2"  method="post" enctype="multipart/form-data" style="display:flex;">
               <input id="image" type="file" name="image" required>
              
                <button type="submit" >Загрузить</button>
                   </form>
                <div id="es_foto" style="border: 1px solid #04b338; padding:2px; font-family:sans-serif; background-color:#04b338; color:#fff; font-size:22px; border-radius:5px; text-align:center;">
            Файл успешно добавлен в базу
            </div>
          
            <div style="margin-top:3px">
                <?flash()?>
            </div>
        </div>
    </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
   function foto_es() {document.querySelector('#es_foto').style.display = "none"};
    $("#form_2").on("submit", function(e){
        e.preventDefault();
        let formData = new FormData();
        formData.append("image", image.files[0]);
 
        $.ajax({
            url: 'upload.php',
            type: 'POST',
            data: formData,
            success: function (data) {
                if(data=='es') {
                    document.querySelector('#es_foto').style.display = 'block';
                    setTimeout(foto_es, 3000);
                }
            },
            cache: false,
            contentType: false,
            processData: false
        });
    });
</script>
вроде все как у вас. Ну да оно и будет тут сразу. Ведь оно не после нажатия появляется а сразу уже на форме расположено
0
Заблокирован
05.06.2023, 14:35
Лучший ответ Сообщение было отмечено gena8208 как решение

Решение

Цитата Сообщение от gena8208 Посмотреть сообщение
Я вам могу ссылку на этот тестовый сайт дать и вы попробуете
А где ссылка?
Цитата Сообщение от gena8208 Посмотреть сообщение
Ну да оно и будет тут сразу.
Оно то сразу, но атрибут display: none;
У вас в коде я этого не вижу.
Цитата Сообщение от gena8208 Посмотреть сообщение
<div id="es_foto" style="border: 1px solid #04b338; padding:2px; font-family:sans-serif; background-color:#04b338; color:#fff; font-size:22px; border-radius:5px; text-align:center;">
            Файл успешно добавлен в базу
            </div>
Здесь нет display: none, а в моем коде он был.
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
05.06.2023, 14:45  [ТС]
Цитата Сообщение от bbkk Посмотреть сообщение
display: none;
прошу прощения. Я ваш стиль на свой поменял и не заметил что у вас есть display: none; а у меня нет. Теперь вроде все отлично работает. Спасибо.

Добавлено через 2 минуты
Цитата Сообщение от bbkk Посмотреть сообщение
display: none
Так ради интереса. А почему после нажатия стиль display: none; не срабатывает? Т.е. мы же нажали на кнопку и текст также с этим стилем должен не отображаться а он отображается
0
Заблокирован
05.06.2023, 14:53
gena8208, изначально display: none;. Потом после загрузки файла мы изменяем на display: block;
вот здесь в коде с помощью js document.querySelector('#es_foto').style .display = 'block'; и этот элемент становится виден. Там же в коде вызываем функцию foto_es с помощью метода setTimeout, который сделает вызов этой функции через 3 секунды. Ну, а функция опять сделает нам этот элемент невидимым document.querySelector('#es_foto').style .display = "none"
1
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
05.06.2023, 15:05  [ТС]
Цитата Сообщение от bbkk Посмотреть сообщение
display
Во всем этом скрипте не понятно что есть что. Я думал что jquery и javascript одно и тоже и как тут прилепился ajax)) Вроде запросы похожи или скрипт очень похож друг на друга и только часть кода меняется или добавляется друг от друга. Можете не отвечать. Это просто так! Мысли вслух
Но ответ уже нашел JavaScript — это язык программирования, а jQuery — это библиотека, состоящая из кода. Спасибо еще раз за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2023, 15:05
Помогаю со студенческими работами здесь

Ajax. Отправка данных в БД, по нажатию кнопки, без перезагрузки станицы
Всем привет! Сразу извиняюсь за банальный вопрос, я только начал заниматься данными технологиями. Меня интересует, как можно при нажатии...

Замена контента по нажатию ссылки без перезагрузки страницы с AJAX
Вопрос такой. Как сделать, чтобы при нажатии на одну из ссылок, менялся контент на странице без ее перезагрузки с помощью AJAX? Есть...

Исполнение PHP-скрипта без перезагрузки страницы и без знания JavaScript(!) - Xajax
Приветствую! Решил запостить отдельной темой, а в прилепленной (про Ajax) просто разместить на нее ссылку. Так будет структурно правильнее,...

Не срабатывает скрипт по нажатию кнопки
Вот класс где находятся данные и кнопка &lt;content class=&quot;content&quot;&gt; &lt;div class=&quot;calc&quot; name=&quot;calc&quot;&gt; ...

Как запустить скрипт по нажатию кнопки?
Здравствуйте, я новичек в django и нужна помощь желательно с примером есть код таймера который отсчитывает время и останавливается ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru