用AJAX调用的PHP函数不起作用

时间:2018-09-20 17:19:24

标签: javascript php ajax wordpress session

我试图通过单击按钮将收藏夹保存到会话中。我正在使用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 :(得分:0)

也许太简单了,但是却被遗忘了;您在PHP文件中使用了“ session_start()”吗? (启动会话管理器)

此外,始终首先检查$ _SESSION ['favorites']是否可用以及具有以下内容的数组:

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

为避免错误,直接解决问题要比解决问题容易得多。