like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей

Почему приходят пустые данные на сервер?

Добрый вечер,
Пишу функционал редактирования контента wordpress с фронт-енда и столкнулся с проблемой.
Вкратце:
Получаю введённые пользователем данные и AJAX запросом отправляю в PHP функцию:
$(document).on('click', '#edit', function(e) {
		e.preventDefault();
			var id = $('#edit').data('lyrics-id');
			var Title = $('.editable').eq(0).text();
			var Content = $('.editable').eq(1).text();
			console.log(Title);
			console.log(Content);
			
		if( Title !== '' && Content !== '') {
				$.ajax({
					type: 'POST',
					data: { 'action': 'edit', 'title': Title, 'content': Content, 'id': id },
					url: '/wp-admin/admin-ajax.php',
					success: function(data, textStatus, XMLHttpRequest) {
					alert(data);
								}
				});
				
		} else {
			alert('Please enter title and content');
		}
	
	});


Там принимаю и отдаю функции:
add_action('wp_ajax_edit', 'editlyrics_ajax_handler' );
function editlyrics_ajax_handler() {

    if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {

	$id = $_POST['id'];
	$post_title = $_POST['title'];
	$post_content = $_POST['content'];
	
	//var_dump($post_title);
	//var_dump($post_content);
	
	$args = array();
            $args['ID'] = $id;
            $args['post_title'] = $post_title; //если задать статичные данные,
            $args['post_content'] = $post_content; //то всё работает
	
	$result = wp_update_post( $args, true );
	
		if (is_wp_error($result)) {
				$errors = $result->get_error_messages();
				foreach ($errors as $error) {
					echo $error;
				}
		} else {
		
				echo $result;
		}

	
	}
	
		die();

}

Функция-обработчик их получает. На первый взгляд это самый обычный текст, но что-то с ним не так, т.к. когда я скармливаю эти переменные функции wp_update_post(), то на сервер приходят пустые данные, вернее сказать в итоге получаются пустые поля в бд.
Если вместо переменных задать статичные данные, всё ок.
В чём дело? Нужно как-то обработать этот текст?

П.С. Добавил код
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
like-a-boss
@like-a-boss Автор вопроса
Признайся,тебяТянетНаКодМужика,ты—программный гей
Код рабочий. Вопрос решён
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
console.log(Title); и console.log(Content) в студию.
Какой функцией отправляете ajax и как? Тоже укажите.
Вероятно, что какой-нибудь токен надо передавать тоже, который генерирует вордпресс, это где-то передается?
Ответ написан
@Centrino
А какие статические данные вы указываете?
Нормально ли ест обновление поста данными на 894 строку?
Перехват ошибок при выполнение функции?
Ответ написан
sivabur
@sivabur
Заблокировали просто так!
$result = wp_update_post( $_POST, true ); -напишите так.

die();-попробуйте убрать

$args = array();
            $args['ID'] = $id;
            $args['post_title'] = $post_title; //если задать статичные данные,
            $args['post_content'] = $post_content; //то всё работает

Это также неплохой вариант если не считать лишнего создания перегонка массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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