Php 如何将js变量从一个html文件传递到另一个html文件?

Php 如何将js变量从一个html文件传递到另一个html文件?,php,javascript,html,variables,Php,Javascript,Html,Variables,我的问题很简单,但由于我仍然缺乏将js、php和html合并的能力,所以我找不到解决这个问题的方法。 该问题涉及3个文件: JS1.js function foobar(foo){ ... } 这里的foo与从HTML1.html文件生成的foo相同 HTML1.html ...<?php $something = Object->method(); $array = Object->anotherMethod($something); echo "<script ty

我的问题很简单,但由于我仍然缺乏将js、php和html合并的能力,所以我找不到解决这个问题的方法。 该问题涉及3个文件:

JS1.js

function foobar(foo){
...
}
这里的foo与从HTML1.html文件生成的foo相同

HTML1.html

...<?php
$something = Object->method();
$array = Object->anotherMethod($something);
echo "<script type=\"text/javascript\"> 
            var foo =" . json_encode($array) . ";
     </script> ";
?>
...
。。。
...
这里我生成了我的php数组的json_encode(d)版本

HTML2.html

...<head>
<script type="text/JavaScript" src="js/JS1.js">
</head>
<body>
...
... onClick = \"foobar(foo)\">";
...
</body>
。。。
...
... onClick=\“foobar(foo)\”>”;
...
这里,基本上,我需要它作为参数来运行JS1.js文件中的foobar js函数

所以我的问题是,如何将foo从HTML1.html传递到HTML2.html


PS:很明显,我有两个拆分的html文件,因为我需要它们,而且它们都做不同的事情,否则问题根本不会发生:)只是为了澄清问题,有两种方法可以做到

  • 1:[最容易、最干净]在浏览器上设置一个javascript可以访问的cookie 阅读

  • 2:[这是一个非常糟糕的主意]让javascript在所有内容的末尾添加一个值 传递值的链接

    • 有两种方法可以做到这一点

      • 1:[最容易、最干净]在浏览器上设置一个javascript可以访问的cookie 阅读

      • 2:[这是一个非常糟糕的主意]让javascript在所有内容的末尾添加一个值 传递值的链接

      在这种情况下,请使用cookie: 在HTML1中,设置var foo后,在cookie中设置它 然后从HTML2获取它

      助手代码(http://www.w3schools.com) 在js中:

      函数getCookie(c_名称) { 变量i,x,y,ARRcookies=document.cookie.split(“;”);
      对于(i=0;i在这种情况下,请使用cookie: 在HTML1中,设置var foo后,在cookie中设置它 然后从HTML2获取它

      助手代码(http://www.w3schools.com) 在js中:

      函数getCookie(c_名称) { 变量i,x,y,ARRcookies=document.cookie.split(“;”);
      对于(i=0;i您是如何进行页面更改的?是一个标准链接,还是在js函数中发生的?您能否在js文件中生成这个var
      foo
      ,并将其包含在两个文件中?还是我不能解决您的问题?。变量不维护HTML页面之间的作用域。感谢大家的回复,我将尝试cookie的方法。回答这个问题Jiving,您的问题是,页面更改是通过表单按钮完成的,因为基本上HTML1.html显示字段列表(数组)而HTML2.html,通过JS1.js,应该处理该列表并执行其他操作。如果它只是一个表单,并且您只需要一次变量,那么cookie就太过分了。您可以在表单上使用
      GET
      POST
      方法来传递信息。您是如何更改页面的?是一个标准链接,还是js中发生了这种情况函数?你能不能在JS文件中生成这个var
      foo
      ,并将其包含在两个文件中?或者我不能了解你的问题吗?。变量不能在HTML页面之间保持作用域。谢谢大家的回复,我会尝试cookie。为了回答你的问题,Jiving,页面更改是通过一个表单按钮完成的,因为y HTML1.html显示字段列表(数组)而HTML2.html,通过JS1.js,应该处理该列表并执行其他操作。如果它只是一个表单,并且您只需要一次变量,那么cookie就太过分了。您可以在表单上使用
      GET
      POST
      方法来传递信息。如果我错了,请纠正我。为了使它更优雅,我可以这样做:1)制作一个JS2.js文件并写下这两个函数2)将JS2.js作为脚本包含在我的HTML1.html和HTML2.html文件中3)在HTML1.html中调用setCookie(name,foo,10)4)调用getCookie(name)在HTML2.html中是这样吗?Jivings还建议,对于我的具体情况,因为我需要只使用一次参数,Cookie可能不是最佳解决方案。他建议使用POST调用将数据发送到另一个页面,但老实说,我不知道如何使用json字符串。如果我错了,请纠正我。为了使其优雅,我可以这样做这是:1)创建一个JS2.js文件并写下这两个函数2)将JS2.js作为脚本包含在我的HTML1.html和HTML2.html文件中3)在HTML1.html中调用setCookie(name,foo,10)4)调用getCookie(name)在HTML2.html中是这样吗?Jivings还建议,对于我的具体情况,因为我需要只使用一次参数,Cookie可能不是最佳解决方案。他建议使用POST调用将数据发送到另一个页面,但老实说,我不知道如何使用json字符串。
      function setCookie(c_name,value,exdays)
      {
      var exdate=new Date();
      exdate.setDate(exdate.getDate() + exdays);
      var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
      document.cookie=c_name + "=" + c_value;
      }
      
      function getCookie(c_name)
      {
      var i,x,y,ARRcookies=document.cookie.split(";");
      for (i=0;i<ARRcookies.length;i++)
      {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name)
          {
          return unescape(y);
          }
        }
      }