@ligisayan

Как исключить перезагрузку страницы при передаче параметра POST?

Всем привет! Есть в интернет-магазине корзина разбитая на 2 вкладки.
В первой пользователь вводит телефон в input и при нажатии на кнопку подтвердить - получает это значение в input поле второй вкладки с переключением на эту вкладку.

В реальном проекте (1 вариант) при нажатии на кнопку подтвердить значение поля я получаю, вторая вкладка буквально на мгновение переключается, но срабатывает перезагрузка страницы и открывается первая вкладка.

Как исключить перезагрузку страницы или переключаться на вторую вкладку по кнопке подтвердить?

Во втором варианте пробую все сделать через ajax, страница не перезагружается, значение запоминается визуально в поле, но ничего не приходит в $_POST['billing_phone_visible'], как в первом случае с перезагрузкой страницы.
Но, внутри ajax значение поля изменилось
success: function() {
		       console.log($('#billing_phone_visible').val());
	        }


Почему так?

Задача упрощена, поэтому, пожалуйста, не стоит задавать вопросы для чего мне нужна такая реализация

Код ниже:
  • Вопрос задан
  • 2051 просмотр
Решения вопроса 1
@ligisayan Автор вопроса
У меня сайт на wordpress, поэтому подключение и работа ajax только таким образом, который описан в статье Ajax в WordPress
<?php
//add_action('admin_print_scripts', 'my_action_javascript'); // такое подключение будет работать не всегда
add_action('admin_print_footer_scripts', 'my_action_javascript', 99);
function my_action_javascript() {
	?>
	<script>
	jQuery(document).ready(function($) {
		var data = {
			action: 'my_action',
			whatever: 1234
		};

		// с версии 2.8 'ajaxurl' всегда определен в админке
		jQuery.post( ajaxurl, data, function(response) {
			alert('Получено с сервера: ' + response);
		});
	});
	</script>
	<?php
}
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
profesor08
@profesor08 Куратор тега JavaScript
Это все у тебя форма, а раз так, то нажатии кнопки и так отправляет данные формы. Обновление страницы происходит при отправке формы, значит тебе надо отловить событие отправки формы и прервать его.

form.addEventListener("submit", e => {
  e.preventDefault();
  // тут делай все свои дела, собирай данные и делай с ними что хочешь.
})
Ответ написан
@barolina
turn coffee into code
Если правильно вас поняла. необходимо передать, значение, введенное пользователем, на сервере, (для проверки, сохранения и еще чего то), то и получить от сервера что, то необходимо, либо положительный или отрицательный ответ.
Должна быть правильная обработка ajax:

$. ajax ({
                    url:'ваш rl',
                    type:'post',
                    data:data,
                    success:function(res){
                        $('#result').html(res);
                    }
                })
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
У вас почти все верно. Кроме обработки ответа. Success принимает в качестве параметра строку принятую в результате выполнения операций на сервере.
Success(data){
Console.log(data);
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы