【问题标题】:PHP function called with AJAX not working使用 AJAX 调用的 PHP 函数不起作用
【发布时间】: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


【解决方案1】:

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

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

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

为避免错误,直接处理比修复后更容易。

【讨论】:

  • 我确实添加了 session_start() 所以这不是问题。但是关于检查的好建议:)
猜你喜欢
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多