【问题标题】:Add variable from session to another session using ajax使用ajax将变量从会话添加到另一个会话
【发布时间】:2018-12-07 13:36:08
【问题描述】:

我是 JavaScript 新手,并尝试从“名称”传递一个会话变量,该变量已经使用 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>

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

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

但它没有显示。任何建议都会受到欢迎。

【问题讨论】:

    标签: javascript ajax session cart session-storage


    【解决方案1】:

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

    示例(未测试):

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

    在此之后,对象“item”将包含响应正文和HTTP状态码等信息。

    【讨论】:

      【解决方案2】:

      如果我理解正确,您正在使用 sessionStorage 对象将 PHP 会话变量值存储在 Javascript/HTML 文档中,对吗?如果是这样,那么请理解,当您尝试更改 一个值时,您只是在 客户端 端更改它,服务器端(或 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']],这样潜在的黑客就无法更改任何会话变量的值。 p>

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

      注意:这不会对输入材料进行任何消毒或保护。这只是一个简单的模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        相关资源
        最近更新 更多