我的问题很简单,但由于我对合并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>
这里,基本上,我需要它作为参数来在JS1.js文件中运行我的foobar-js函数
所以我的问题是,如何将foo从HTML1.html传递到HTML2.html?
PS:不幸的是,我有两个拆分的html文件,因为我需要它们,而且两者都做不同的事情,否则问题根本不会发生:)只是为了清理东西
在这种情况下,使用cookie:在HTML1中,设置var foo后,将其设置在cookie中然后从HTML2 中获取
辅助程序代码(http://www.w3schools.com)js:
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);
}
}
}
有两种方法可以做到这一点,
- 1:[easiest,cleanest]在浏览器上设置一个cookie,javascript可以阅读w3schools.com上的javascript cookie
或
- 2:[这是一个非常糟糕的主意]让javascript在所有值的末尾添加一个值用于传递值的链接