我试图通过单击按钮将收藏夹保存到会话中。我正在使用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);
}
答案 0 :(得分:0)
也许太简单了,但是却被遗忘了;您在PHP文件中使用了“ session_start()”吗? (启动会话管理器)
此外,始终首先检查$ _SESSION ['favorites']是否可用以及具有以下内容的数组:
if(isset($_SESSION['favorites']) && is_array($_SESSION['favorites'])){
array_push($_SESSION['favorites'], $post_id);
}
为避免错误,直接解决问题要比解决问题容易得多。