Задать вопрос
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 просмотра
Подписаться 3 Оценить 2 комментария
Решения вопроса 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; //то всё работает

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

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
BGStaff Москва
До 300 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽