【问题标题】:JavaScript and a stackJavaScript 和堆栈
【发布时间】:2010-10-14 06:13:39
【问题描述】:

我正在使用 JavaScript 将值存储在堆栈中。问题是堆栈值保持活动状态,直到页面被刷新。刷新页面时,堆栈值中的值设置为“未定义”。实现一个永久存储堆栈值的地方会更好吗?

那么即使页面被刷新,旧的堆栈值也应该可以被取回。

如何在 PHP 脚本中实现以下堆栈 sn-p?

   var arr = new Array();
   var pushed = arr.push(id);  // For pushing into the stack
   arr.splice(0,arr.length); // For deleting the stack

如何在 JavaScript 中引用 PHP 存储的值?

【问题讨论】:

  • 到目前为止发布的所有三个答案都首先提到您的问题并不十分清楚。您能否尝试改写您的问题并总结您遇到的实际问题?这肯定有助于获得更好的答案。

标签: php javascript arrays


【解决方案1】:

假设您希望 JavaScript 变量中的某些值在页面加载之间保持不变,您可以按照 Damovisa 的建议进行操作,也可以简单地使用隐藏字段以某种形式存储堆栈值。也许是逗号分隔的字符串或类似的东西。

优势显而易见。您的程序不会依赖客户端的浏览器来启用 cookie。

作为替代方案,如果可能的话,您可以在某个服务器端变量中维护您的堆栈,然后在呈现页面时将该值动态插入到 JavaScript 代码中。

如果您能向我们提供有关您的计划的更多详细信息,将会非常有帮助。

如果您希望 PHP 变量中的值反映在您的 JavaScript 代码中,请在您的 JavaScript 代码中嵌入 PHP 标记。

例如:

<script>
    var str = "<?php echo $my_str; ?>";
    //Do something with str
</script>

请务必包含引号 ("),否则字符串中的值将被 JavaScript 视为标记并可能引发错误。

【讨论】:

    【解决方案2】:

    如果我正确解释了您的问题,您是在问 JavaScript 对象是否可以在页面刷新之后持续存在?

    不幸的是,当加载新页面时,所有 JavaScript 对象都会丢失。它们无法在页面刷新后继续存在。

    我建议使用 cookie。我现在还不够专注于为您编写代码,但一般来说:

    当您从堆栈中推送/弹出时,将堆栈持久保存到保存在客户端计算机上的 cookie 中。当页面第一次加载(或在您的示例中刷新)时,查找该 cookie 并将持久堆栈写入您的 JavaScript 对象。

    查看这些页面以帮助从 JavaScript 持久化到 cookie:

    1. David Winterbottom's links
    2. Cookies
    3. JavaScript Cookies

    【讨论】:

      【解决方案3】:

      解决此问题的另一种方法是不刷新页面,而是使用 Ajax 重新加载其主体、表单或 div 元素。 jQuery 让这个尤其是变得简单:

      $('body').load(url);
      

      这样您就可以在更新之间保持脚本值的持久性。

      【讨论】:

        【解决方案4】:

        您可以序列化对象并将其发布到 URL 中的 JavaScript 并在页面上从 URL 解析它。这可能不是最好的方法,但既然你在问,我假设你不能使用任何后端技术来永久存储数据。

        【讨论】:

          【解决方案5】:

          不完全确定你在问什么
          如果你想用一个对象来实现 sn-p,试试这样:

          var obj = {};
          obj[key] = id; // to add
          obj = {};      // to remove all items
          del obj[key];  // to remove 1 item
          

          【讨论】:

            猜你喜欢
            • 2011-09-29
            • 1970-01-01
            • 2014-06-23
            • 2020-10-24
            • 2021-11-18
            • 2021-12-08
            • 2023-03-20
            • 2021-04-13
            • 1970-01-01
            相关资源
            最近更新 更多