Функция PHP, вызванная с AJAX, не работает - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь сохранить избранное в сеансе, нажав на кнопку.Я использую AJAX для вызова функции php save_favorite ().Функция вызывается, но по какой-то причине метод save_favorite_in_session_variable () просто не будет работать при таком вызове.Я протестировал функцию сам по себе, и она отлично работает.Кто-нибудь знает, что мне не хватает?

//JavaScript

$(document).on('click', '.add-favorite', function() {
    var imgId = $(this).data('id');
    saveFavorite(imgId);
});

function saveFavorite(imgId) {
    var data = {
        'action': 'save_favorite',
        'id' : imgId
    };
    jQuery.post(my_ajax_object.ajax_url, data, function(response) {
        alert(response);
    });
}

// PHP

function save_favorite() {
    ob_start();
    debug_to_console('saving favorite');

    if ($_POST['id']) {
        $post_id = $_POST['id'];
        save_favorite_in_session_variable($post_id);
    }
    wp_die();
}
add_action('wp_ajax_save_favorite', 'save_favorite');
add_action('wp_ajax_nopriv_save_favorite', 'save_favorite');

function save_favorite_in_session_variable($post_id) {
    array_push($_SESSION['favorites'], $post_id);
}

1 Ответ

0 голосов
/ 20 сентября 2018

Может быть, слишком просто, но сильно забыто;Вы используете 'session_start ()' в файле PHP?(Для запуска диспетчера сеансов)

Кроме того, всегда сначала проверяйте, доступен ли $ _SESSION ['избранное'] и массив с:

if(isset($_SESSION['favorites']) && is_array($_SESSION['favorites'])){
    array_push($_SESSION['favorites'], $post_id);
}

Чтобы избежать ошибок, легче обрабатыватьэто напрямую, а не после исправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...