Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2020, 15:35
Интересующийся
Отправить личное сообщение для AndreyKaO Посмотреть профиль Найти все сообщения от AndreyKaO
 
Регистрация: 19.08.2020
Сообщений: 10

Как php задействовать в ajax
Здравствуйте уважаемые форумчане. У меня возникла проблема, я впервой знакомлюсь с ajax, как знаю через него можно убрать обновление страницы, когда у формы метод «POST». У меня как работает, я нажимаю на кнопку с именем «click» он мне прибавляет число записанное в бд. Оно всё работает, но каждый раз, когда я нажимаю на кнопку происходите обновление страницы. Как исправить это с помощью ajax?
if(isset($_POST['click']))
    {
        mysqli_query($connect, "UPDATE `Accounts` SET `Click`= `Click` + `UpdateClick` WHERE `Login` = '$Check'");
    }

<form method = "POST">
            <center><button id = "btn" name="click"><img src="Assets/Images/clicker.png" style="width:200px;"></button></center> 
            <button name = "update" class = "update">Улучшить уровень</button>
            </form>

Хотелось бы, чтоб объяснили с примером, потому что не понял вообще как это. Буду очень благодарен вам.
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2020, 15:51
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

Почитайте:
https://developer.mozilla.org/en-US/...ormData_object
https://pqina.nl/blog/async-form-pos...la-javascript/
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2020, 15:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

На русском ничего адекватного не нашел.

По сути алгоритм работы должен быть примерно таким:
1. вешаете на формы слушатель события submit;
2. в слушателе глушите событие по умолчанию;
3. собираете с формы нужные данные;
4. блокируете кнопки type=submit;
5. отправляете асинхронный запрос к серверу;
6. после получения ответа разблокируете кнопки type=submit;
7. делаем что-нибудь в зависимости от успешности запроса (например вывести на странице уведомление и сбросить данные формы).
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2020, 16:11
Интересующийся
Отправить личное сообщение для AndreyKaO Посмотреть профиль Найти все сообщения от AndreyKaO
 
Регистрация: 19.08.2020
Сообщений: 10

Так, думал в строк 5-6 делается, а там целая функция. Не подойдёт похоже такое. Всё равно спасибо)
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2020, 16:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

Сообщение от AndreyKaO
Так, думал в строк 5-6 делается, а там целая функция.
Если библиотека jquery подключена, то делается все действительно в несколько строк, иначе либо самому писать решение, либо искать уже готовые.

jq:
$('form').on('submit', function (e) {
    e.preventDefault();

    const $form = $(this);

    $form.find('[type="submit"]').prop('disabled', true);

    $.ajax(this.action, {
        method: this.method || 'post',
        data: $form.serialize(),
        completed: () => {
            $form.find('[type="submit"]').prop('disabled', false);
        },
        success: response => {
            $form.get(0).reset();
        }
    });
});
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2020, 17:18
Интересующийся
Отправить личное сообщение для AndreyKaO Посмотреть профиль Найти все сообщения от AndreyKaO
 
Регистрация: 19.08.2020
Сообщений: 10

Всё хорошо, кнопка блокируется, но само действие не выполняется.
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2020, 17:22
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

AndreyKaO, откройте консоль и посмотрите есть ли ошибки и отправляется ли запрос.

https://learn.javascript.ru/devtools
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2020, 17:26
Интересующийся
Отправить личное сообщение для AndreyKaO Посмотреть профиль Найти все сообщения от AndreyKaO
 
Регистрация: 19.08.2020
Сообщений: 10

Nexus, пустая.
Ответить с цитированием
  #9 (permalink)  
Старый 19.08.2020, 17:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,823

AndreyKaO, откройте devtools (в Chrome: F12), вкладка Console.
Нажмите в форме на кнопку "улучшить уровень".
Если в консоли ошибок не появилось, откройте вкладку Network, примените фильтр «XHR», найдите только что отправленный запрос и посмотрите, что было отправлено, куда, каким методом и что на запрос ответил сервер.
Ответить с цитированием
  #10 (permalink)  
Старый 19.08.2020, 17:33
Интересующийся
Отправить личное сообщение для AndreyKaO Посмотреть профиль Найти все сообщения от AndreyKaO
 
Регистрация: 19.08.2020
Сообщений: 10

Ответ 200 OK
Метод POST.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить из Ajax одну переменную и получить ответ в Ajax виде массива? olegalimov AJAX и COMET 42 14.02.2018 10:35
как получить результат от ajax запроса (из отдельного файла) 1Feniks1 AJAX и COMET 0 12.03.2017 18:45
Ajax. Как сделать загрузку изображений, отображение, удаление как на Авито wowtschuk AJAX и COMET 1 07.03.2017 01:34
как присвоить возвращаемую через Ajax в php переменную 3dmaker AJAX и COMET 1 16.06.2014 21:14
PHP + Ajax : проблема с отправкой формы... Talker AJAX и COMET 1 04.04.2013 18:16