Значения флажков не сохраняются правильно при вызове AJAX. (Вордпресс)Jquery

Программирование на jquery
Ответить
Гость
 Значения флажков не сохраняются правильно при вызове AJAX. (Вордпресс)

Сообщение Гость »


Я создаю функцию темы в WordPress. Я хочу составить конкретный список сообщений на бэкэнде и показать их в определенной части интерфейса. Я хочу управлять/обновлять один и тот же список только в том случае, если хочу изменить сообщения в этом списке. Я создал файл «flash-news-management.php», который включил в «functions.php», и создал файл «custom.js» для обработки данных и строк. Я могу выбрать сообщение и добавить его в таблицу в виде новой строки, где есть 3 поля: 1. Название сообщения, 2.Показать изображение и 3.Показать отрывок. «Показать изображение» и «Показать отрывок» — это поле флажка, которое я обновляю в таблице wp_options с помощью параметра «flash_news_list_data». Теперь я застрял в том, что каждый раз, когда я устанавливаю флажок, данные в базу данных вставляются как 0 вместо 1. Надеюсь, кто-нибудь мне поможет.

Вот мои коды:

custom.js:

jQuery(document).ready(function ($) { счетчик вар = 1; // Загружаем сохраненные данные при загрузке страницы вар saveData = flash_news_manager.savedData; for (var postId в сохраненных данных) { вар postTitle = saveData[postId].postTitle; вар showImage = saveData[postId].showImage; вар showExcerpt = saveData[postId].showExcerpt; var newRow = ''; newRow += '' + счетчик + ''; newRow += '' + postTitle + ''; newRow += ''; newRow += ''; newRow += 'Удалить'; newRow += ''; $('#flash-news-list').append(newRow); счетчик++; } // При нажатии кнопки «Добавить в список» $('#add-to-list').on('click', function () { var postId = $('#post-select').val(); var postTitle = $('#post-select option:selected').text(); var newRow = ''; newRow += '' + счетчик + ''; newRow += '' + postTitle + ''; newRow += ''; var showImageCheckbox = $(this).closest('tr').find('.showImageCheckbox'); // Преобразуем логические значения в целые числа (1 или 0) вар showImage = showImageCheckbox.is(':checked') ? 1:0; newRow += ''; var showExcerptCheckbox = $(this).closest('tr').find('.showExcerptCheckbox'); // Преобразуем логические значения в целые числа (1 или 0) вар showExcerpt = showExcerptCheckbox.is(':checked') ? 1:0; newRow += 'Удалить'; newRow += ''; $('#flash-news-list').append(newRow); счетчик++; $('#post-select').val(''); // Сохраняем данные публикации через AJAX savePostData (postId, postTitle, showImage, showExcerpt); }); // При нажатии кнопки «Удалить» $('#flash-news-list').on('click', '.remove-button', function () { var rowId = $(this).data('rowid'); var postId = $('#row-' + rowId).data('postid'); // Удаляем строку из списка $('#row-' + rowId).remove(); // Удаляем данные публикации через AJAX удалитьPostData (postId); }); // Функция для сохранения данных публикации через AJAX функция savePostData(postId, postTitle, showImage, showExcerpt) { вар данные = { действие: 'save_post_data', post_id: идентификатор сообщения, post_title: заголовок поста, шоу_изображение: шоуизображение, show_excerpt: showExcerpt, }; // Убедитесь, что значения являются целыми числами (0 или 1) data.show_image = data.show_image ? 1:0; data.show_excerpt = data.show_excerpt ? 1:0; $.post(flash_news_manager.ajax_url, данные); } // Функция для удаления данных публикации через AJAX функция RemovePostData(postId) { вар данные = { действие: 'remove_post_data', post_id: идентификатор сообщения, }; $.post(flash_news_manager.ajax_url, данные); } // При нажатии кнопки «Сохранить список» $('#save-list').on('click', function () { console.log('Нажата кнопка «Сохранить список».'); вар postData = []; $('#flash-news-list tbody tr').each(function () { вар postId = $(this).data('postid'); var showImage = $(this).find('input[name="show_image[]"]').is(':checked') ? 1:0; // Обработка как целое число var showExcerpt = $(this).find('input[name="show_excerpt[]"]').is(':checked') ? 1:0; // Обработка как целое число postData.push({ идентификатор сообщения: идентификатор сообщения, шоуизображение: шоуизображение, шоуЭксцерпт: шоуЭксцерпт, }); }); // Определить и заполнить переменную данных перед отправкой запроса AJAX вар данные = { действие: 'save_list_data', list_data: postData || [], // Убедитесь, что postData является массивом }; // Отправляем запрос AJAX saveListData (данные); }); // Функция для сохранения данных списка через AJAX функция saveListData (данные) { data.list_data = data.list_data || []; // Убедитесь, что list_data является массивом console.log('Отправка запроса AJAX для сохранения данных списка.'); // Добавьте эту строку для отладки $.post(flash_news_manager.ajax_url, данные, функция (ответ) { если (ответ.успех) { console.log("Успех"); $('#save-success-message').show().fadeOut(3000); } }).fail(функция (ответ) { console.log('Запрос AJAX не выполнен:', response.responseText); }); } }); flash-news-management.php:

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»