使用 ajax 将变量从会话添加到另一个会话

Add variable from session to another session using ajax

我是 JavaScript 的新手,并试图从 'Name' 传递一个会话变量,该变量已经使用 PHP 分配了一个变量,并将其传递给 'cartItem'单击按钮。

据我所知,当前代码将 'Name' 的值存储到 var 项中,然后向服务器请求 HTML 到 return 并更新会话变量 'cartItem'存储在 var item 中的值。

按钮和脚本:

<button id='addToCart' onclick='addToCart'>Add to cart</button>
                        <script>
                            function addToCart(){
                                var item = sessionStorage.getItem('Name');
                                item = new XMLHttpRequest();
                                item.onreadystatechange = function(){
                                    if (this.readyState == 4 && this.status == 200){
                                        sessionStorage.setItem('cartItem', item);
                                    }          
                                }
                            }
                        </script>

cartItem 然后使用跨所有页面调用的函数显示在我的导航栏中

                        <span class='item-info'>
                        <span>" . $_SESSION['cartItem'] . "</span>
                    </span>

但是没有显示。任何建议将不胜感激。

如果我理解正确,您正在使用 sessionStorage 对象在 Javascript / HTML 文档中存储 PHP 会话变量值, 正确的?如果是这样,那么请理解,当您尝试 change 一个值时,您只是在 client 端、服务器端(或 PHP侧)不受影响)。

看起来您对 XMLHttpRequest 的想法是正确的,但是为了完成您需要做的事情,您需要制作一个 PHP 脚本,其中 Javascript 函数会ajax到。这是一个小模型:

<?php
//NOTE: this does not do any input sanatation

//name of this script is changeVal.php
$keyAr = ["Name","Price","Value","Other"];
if (in_array($_POST['key'],$keyAr) {
    $_SESSION[$_POST['key']] = $_POST['val'];   
}

我故意以这种方式使用数组而不是 $_SESSION[$_POST['key']] 以便潜在的黑客无法更改值任何会话变量。

一旦你有了上面的脚本,你就可以向那个脚本发出 ajax 请求,其中 key 是要更改的 var 的名称,val 是要将其更改为的值。

注意: 这不会对输入 material 执行任何清理或保护。这只是一个简单的模型。

您已创建 XMLHttpRequest 对象,但尚未打开 URL 或发送请求。

示例(未测试):

var name = sessionStorage.getItem('Name');
var item = new XMLHttpRequest();
item.open("GET", "http://www.example.com/endpoint/" + name);
item.send();

此后,对象"item"将包含响应正文和HTTP状态代码等信息。