在JavaScript函数中用数组数据动态填充PHP cookie


Dynamically fill PHP cookie with array data in a JavaScript function

我有一个带有复选框的用户列表。每次选中复选框时,都会调用一个函数。该函数从复选框中获取userid,该userid应添加到php数组中,然后添加到cookie中。如果cookie还不存在,则应该创建它。cookie的值应该是传递给该函数(id)的JavaScript参数。

我的问题是,我不知道如何动态地实现这一点。例如,当cookie中还没有userid时,应该将其添加到变量[0]中。此外,我如何将JavaScriptID变量传递给PHP以将其设置为cookie值?

这就是我迄今为止所尝试的:

function loadUserCalendar(id) {
    console.log('user selected: ' + id);
    // check if user is checked or not
    if($('input[value="' + id+ '"]').is(':checked')) {
        console.log('user ' + id + ' is checked now');
        // add user to cookie
        <?php
              $calendar_users = $_COOKIE['calendar_users'];
              if(empty($calendar_users)) {
                  session_start();
                  setcookie("calendar_users[" + $calendar_users.length + 1 + "]", "id", time()+3600*24*30*12);
                  session_commit();
        ?>
                  console.log('added user to cookie');
        <?php
              } else {
        ?>
                  console.log('going to add user to existing cookie');
        <?php
              }
        ?>
    } else {
        console.log('user ' + id + ' is UN-checked now');
        // remove user from cookie
    }
}

感谢您的帮助!非常感谢。

如果您想将一个变量从javascript传递到php,您需要使用AJAX,并且您需要将其保存在会话或数据库中。

请记住,php是一种服务器端语言,在收到响应后,与服务器的连接将关闭。要将数据发送到服务器,您必须刷新整个页面,或者使用AJAX。

此外,javascript cookie和php cookie之间没有区别——它们是相同的。

查看此网站如何在js中设置cookiehttp://www.w3schools.com/js/js_cookies.asp

此外,如果您使用的是jquery,它会更容易:

$.cookie('somecookie', 1);

如何使用jQuery设置/取消设置cookie?

但你需要使用一个插件https://github.com/carhartl/jquery-cookie