【问题标题】:Changing the value of a session with Ajax in Wordpress not working在 Wordpress 中使用 Ajax 更改会话的值不起作用
【发布时间】:2016-04-22 06:50:42
【问题描述】:

我对使用 Ajax 有点陌生,但我正在尝试使用 Ajax 更新会话的值。 Ajax 调用应该在单击按钮时触发。

当我点击这个按钮时,它也会返回成功函数。我在这个 Ajax 调用中使用 Wordpress。

目前这是我的代码:

Ajax 调用:

$('.button').click(function(){
    $.ajax({
                type: "POST", 
                url: "/wp-admin/admin-ajax.php", 
                data: {click: "true"},
                success: function() { 
                    alert('bro it worked!'); 
                }
            }); 
}); 

Wordpress 中的functions.php:session_start();

function notificationCall() { 
  $_SESSION['clicked'] = $_POST['click']; 
  die(); 
}

add_action('wp_ajax_notificationCall', 'notificationCall');
add_action('wp_ajax_nopriv_notificationCall', 'notificationCall');

echo $_SESSION['clicked']; 

所以我的 Ajax 调用返回了 succes 函数,该函数包含一个带有“Bro it working”的字符串。但是,我的会话始终保持相同的默认值“false”。

有什么想法吗?

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    它始终为 true 的原因是因为您的 ajax 发布数据 data: {click: "true"} 被硬编码为 true,并且因为这是您使用 $_SESSION['clicked'] = $_POST['click']; 设置它的值,所以它将始终为 true。

    一种解决方案可能是在其中硬编码一个切换:

    function notificationCall() {
      if ($_SESSION['clicked'])
         $_SESSION['clicked'] = false;
      else
         $_SESSION['clicked'] = true;
      die(); 
    }
    

    更新

    我认为您需要指定要在您的 ajax 请求数据中调用的 php 函数,因此应该如下所示:

    data: {action: "notificationCall", click: "true"},
    

    【讨论】:

    • 我错了杰夫。我写了一个小错字。我的默认值是“假”而不是“真”。
    • 您可以在每次调用 notificationCall 函数时切换状态。我已经用可能的解决方案更新了我的答案
    • 这个不用Ajax吧?只有单击按钮时,会话值才应更改为“true”。并且默认值始终必须为“false”。
    • 啊,我认为您缺少 ajax 请求数据中的函数调用 action: "notificationCall"
    • 嗨,杰夫,您的最后一条评论似乎成功了!我必须在data 中指定操作。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    相关资源
    最近更新 更多