Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2018, 05:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Chmil
Вот еще на тостере нашел подобную проблему
Там причина проблемы в том, что установку обработчика воткнули в функцию.

А что у вас такое $_POST["part"] и где оно в форме?

И уже говорилось - проблемы связанные с серверным кодом размещать в соответствующем разделе.
Ответить с цитированием
  #3 (permalink)  
Старый 08.11.2018, 09:28
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

Цитата:
А что у вас такое $_POST["part"] и где оно в форме?
в обработчике 6-я строка:
'textarea_name' => 'part', //нужно указывать!

ето имя поля textarea функции wordpress 'wp_editor', она выводит не просто поле textarea, а полноценный визуальный и HTML редактор WP (TinyMCE)
Ответить с цитированием
  #4 (permalink)  
Старый 08.11.2018, 09:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Chmil
ето имя поля textarea функции wordpress
Сейчас и на будущее - здесь форум Javascript, РНР код выполнить нельзя и никто не будет догадываться что выдаст клиенту какая-то функция WP. Открывайте инспектор отладчика, копируйте html код формы и т.п., по которому у вас вопрос и который обрабатывает JS скрипт, и вставляйте его в темах, а не функции WP. Можно и из правого меню браузера "Исходный код страницы" скопировать нужный html фрагмент.

В этом случае вы можете рассчитывать на ответ, иначе никто гадать не станет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправляются данные djonA Общие вопросы Javascript 2 05.06.2015 11:16
не отправляются данные XMLHttpRequest() sinefighter AJAX и COMET 1 07.07.2014 08:30
не отправляются данные XMLHttpRequest() sinefighter Events/DOM/Window 2 05.07.2014 18:05
WYMeditor: не отправляются данные на сервер Ticksy jQuery 0 04.01.2011 21:45
Не отправляются на сервер данные из клонированных полей Dark jQuery 1 02.04.2010 19:53