【发布时间】:2019-02-25 01:36:46
【问题描述】:
我正在尝试通过单击按钮将收藏夹保存到会话中。我正在使用 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);
}
【问题讨论】:
-
您的 javascript 函数是否真的触发了 AJAX 请求?检查您的网络选项卡以首先查看 JS 是否正在发送发布请求。
-
“save_favorite_in_session_variable() 方法不起作用” 是什么意思?
-
是的,它正在触发、调用正确的函数、发送正确的数据等。
-
这意味着在 AJAX 调用之外工作的功能(添加到会话变量中)不是这样工作的。
标签: javascript php ajax wordpress session