Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax将变量从会话添加到另一个会话_Javascript_Ajax_Session_Cart_Session Storage - Fatal编程技术网

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

Javascript 使用ajax将变量从会话添加到另一个会话,javascript,ajax,session,cart,session-storage,Javascript,Ajax,Session,Cart,Session Storage,我是JavaScript新手,尝试从“Name”传递一个会话变量,该变量已经使用PHP分配了一个变量,并在单击按钮时将其传递到“cartItem”中 据我所知,当前代码将'Name'的值存储到var item中,然后向服务器请求HTML,以返回并使用存储在var item中的值更新会话变量'cartItem' 按钮和脚本: <button id='addToCart' onclick='addToCart'>Add to cart</button>

我是JavaScript新手,尝试从“Name”传递一个会话变量,该变量已经使用PHP分配了一个变量,并在单击按钮时将其传递到“cartItem”中

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

按钮和脚本:

<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>
添加到购物车
函数addToCart(){
var item=sessionStorage.getItem('Name');
item=新的XMLHttpRequest();
item.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
sessionStorage.setItem('cartItem',item);
}          
}
}
然后,cartItem使用跨所有页面调用的函数显示在我的导航栏中

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

“$\u会话['cartItem']

但它并没有表现出来。任何建议都会收到。

如果我理解正确,您正在使用sessionStorage对象在Javascript/HTML文档上存储PHP会话变量值,对吗?如果是这样的话,那么请理解,当您试图更改一个值时,您只是在客户端更改它,而服务器端(或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'];   
}

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

示例(未测试):

在此之后,对象“item”将包含响应主体和HTTP状态代码等信息

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