Показать сообщение отдельно
  #1 (permalink)  
Старый 07.11.2018, 01:44
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

Отправляются данные за вторым разом
Здравствуйте уважаемые, простой скрипт отправки полей формы по непонятным причинам отправляет данные обработчику (php-файл) всегда за вторым разом. Данный скрипт удалось написать с Вашей помощью, за что очень Вам благодарен (ссылка на предыдущую тему) и он же на другой странице работает идеально. Итак, вот код скрипта:
jQuery(document).ready(function($){	
			$('#lbkg_form').submit(function(e) {				
				e.preventDefault();
				$.ajax({
					type: this.method,
					url: this.action,
					dataType: "json", // тип передачи данных - это тип ожидаемых данных от сервера
					data: $(this).serialize(),
					// после получения ответа сервера
					success: function(data){
						$('.messages').html(data.result); // выводим ответ сервера
					}
				});
			});
		});

а вот обработчик (часть php-файла):
/*поле textarea*/
echo '<form action="' . plugins_url('lb-kg/lb-kg.php') . '" method="POST" id="lbkg_form">';
	wp_editor($GLOBALS["part"], 'editor_id', array(
	'wpautop'       => 1,
	'media_buttons' => 1,
	'textarea_name' => 'part', //нужно указывать!
	'textarea_rows' => 20,
	'tabindex'      => null,
	'editor_css'    => '',
	'editor_class'  => '',
	'teeny'         => 0,
	'dfw'           => 0,
	'tinymce'       => 1,
	'quicktags'     => 1,
	'drag_drop_upload' => true
	) );
	echo '<input type="hidden" name="hlbkgadm" value="1">';
	submit_button( 'Сохранить контент' );
	echo '</form>';
	echo '<div class="messages"></div>';

/*сам обработчик*/
if (($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST["hlbkgadm"])) {
	if (!empty($_POST["part"])) {
		$f = fopen("part.txt", "w");
		fwrite($f, $_POST['part']);
		fclose($f);
		unset ($_POST["part"]);
		$arr = array('result' => '<span style="color: #006400; font-weight: 600;">Изменения успешно сохранены!</span>');
		exit(json_encode($arr));
	} else {
		$f = fopen("part.txt", "w");
		fwrite($f, '');
		fclose($f);
		$arr = array('result' => '<span style="color: #FF0000; font-weight: 600;">Данные отсутствуют!</span>');
		exit(json_encode($arr));
	}	
}

Движок wordpress, использую встроенные функции движка. Смотрел в консоль, при первом нажатии на кнопку "submit_button" данные отправляются, но только те что были до ввода. Объясню на двух примерах:
1. открываю данное текстовое поле для ввода, оно пустое, я ввожу текст, жму отправить, происходит отправка но переменная пустая (так как раньше поле было пустым), в поле введенный текст присутствует, когда жму повторно на кнопку, то отправляется как надо.
2. например ввожу в пустое поле цифру 1, жму кнопку 1 раз, передается пустое значение (до того поле было пустым), дописываю цифру 2 (в поле уже введено 12), жму кнопку еще 1 раз, передается цифра 1, если потом еще раз нажму, то уже передастся 12.
Получается что при первом нажатии текущий текст поля где-то запоминается и за вторым разом нажатия уже отправляется.
Вот еще на тостере нашел подобную проблему https://toster.ru/q/227618
Помогите пожалуйста в решении этой проблемы, спасибо

Последний раз редактировалось Chmil, 07.11.2018 в 01:46.
Ответить с цитированием