我正在打开这样的新页面:
var openedwidow = window.open(billhref, '', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, (screen.availWidth - w)/2)+',top='+Math.max(0, (screen.availHeight - h)/2));
第二个html页面如下所示:
<div class="row contractor_data__item">
<label for="code">Номер</label>
<input type="text" name="code" id="code" disabled/>
<input type="hidden" name="documentId" id="documentId">
<input type="hidden" name="actId" id="actId">
<input type="hidden" name="actCode" id="actCode">
</div>
在新窗口的页面上打开我有几个字段要填写。例如,我已填写&#34;代码&#34;第一页上的字段,需要填写&#34;代码&#34;页面中的字段已打开。怎么做?
问题的第二部分是我填写了打开的页面上的某些字段,例如documentId
,并且需要将其传递到第一页,我已经将其称为关闭,例如,或填写的字段。如何做到这一点?
答案 0 :(得分:2)
在HTML5中,您可以使用会话将对象从页面传递到另一个:
//将数据保存到sessionStorage
sessionStorage.setItem('key', 'value');
//从sessionStorage获取保存的数据
var data = sessionStorage.getItem('key');
//从sessionStorage中删除已保存的数据
sessionStorage.removeItem('key')
如需进一步参考,您可以查看here
修改强> 示例代码: 的 Page1.html 强>
<!DOCTYPE html>
<html>
<head>
<title>Page1</title>
<script type="text/javascript">
sessionStorage.setItem("name","ShishirMax");
var fName = sessionStorage.getItem("name");
console.log(fName);
function myFunction(){
window.open("page2.html");
}
</script>
</head>
<body>
This is Page 1
</br>
<button onclick="myFunction()">SendThis</button>
</body>
</html>
<强> Page2.html 强>
<!DOCTYPE html>
<html>
<head>
<title>Page 2</title>
</head>
<body>
This is Page 2</br>
<input type="text" name="txtName" id="txtName" value="">
<script type="text/javascript">
var fName = sessionStorage.getItem("name");
console.log(fName);
document.getElementById("txtName").value = fName;
</script>
</body>
</html>
尝试使用以下代码进行测试。
答案 1 :(得分:1)
嗨,如果你想在某个页面中传输数据,你可以在js中使用localStorage我们的sessionStorage
关闭浏览器时sessionStorage清除与localstorage之间的区别只有在您提出时才会清除
请参阅sintax的文档,例如:
你的值是'data'变量,例如
var data;
sessionStorage.setItem('nameyourvar', data);
您可以使用以下网址获取其他页面:
sessionStorage.getItem('nameyourvar')
答案 2 :(得分:1)
使用查询字符串。这就是他们的目标。不要&#39;忘记将值包装在encodeURIcomponent
中,以防它们包含任何特殊字符。
window.open("somewhere.html?firstname="+encodeURIComponent(firstname)+"&lastname="+encodeURIComponent(lastname)+"");
在新窗口中,您可以像查询
一样从查询字符串中获取值function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var firstname = getParameterByName('firstname'); // "Bob"
var lastname = getParameterByName('lastname'); // "Dole"
功能来自here。
答案 3 :(得分:1)
由于其他人提及localstorage
,您应该知道所有浏览器都不支持localstorage
。如果您对使用类似的东西感兴趣(您应该使用查询字符串),可以查看我写的cross browser database Library。
将您的项目设置为第一页上的数据库
jSQL.load(function(){
jSQL.createTable("UserData", [{FirstName: "Bob", LastName: "Dole"}]);
jSQL.persist(); // Save the data internally
});
从第二页获取您的商品
jSQL.load(function(){
var query = jSQL.query("SELECT * FROM `UserData`").execute();
var row = query.fetch("ASSOC");
var firstname = row.FirstName;
var lastname = row.LastName;
});
答案 4 :(得分:0)
您可以使用GET
参数。
当您打开第二页时,请将您要传递的所有数据作为GET
参数传递到网址中,例如:
var billhref = "whatever.html?code=your_code¶meter2=parameter2_value" ;
var openedwidow = window.open(billhref, '', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, (screen.availWidth - w)/2)+',top='+Math.max(0, (screen.availHeight - h)/2));
创建一个JS函数来获取第二页上的参数:
function getParams() {
var params = {},
pairs = document.URL.split('?')
.pop()
.split('&');
for (var i = 0, p; i < pairs.length; i++) {
p = pairs[i].split('=');
params[ p[0] ] = p[1];
}
return params;
}
然后使用此函数获取这样的url参数:
params = getParams();
for( var i in params ){
console.log( i + ' : ' + params[i] );
}
这将返回如下输出:
code : your_code
parameter2 : parameter2_value
使用PHP可以帮助您解决更短代码的问题
例如,在PHP中,要获取参数code
,您只需编写:
$code = $_GET['code'];
它会为您分配一个名为code
的变量,您在网址中传递的值与code
参数(在此示例中为your_code
)。