page1.js:
在page1.js中,我从一个回调方法获取r.message对象中的一些大数据,我将其传递给update_page2.html
if (r.message != undefined) {
var data = r.message.last_name; // trying with only one element for sample
console.log(data);
window.location = 'update_page2.html?data=' + data;
}
update_page2.js:
$(document).ready(function() {
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
return decodeURIComponent(pair[1]);
}
}
console.log('Query variable %s not found', variable);
}
console.log(getQueryVariable('data'));
var d = getQueryVariable('data');
$('[data-fieldname="last_name"]').val(d);
});
上面的内容对我有用,因为我传递只有一个值(last_name) 从页面到第2页。
问题1:当我将整个对象(r.message)从第1页传递到update_page2时,在网址中它正确显示update_page2.html?data=[object%20Object]
,但无法正常显示在js中解析该对象。我该如何解析该对象。
(在 console.log(getQueryVariable(&#39; data&#39;))上,该对象看起来像一个字符串而不是对象)
问题2:如果我将一些数组元素从第1页传递到第2页,如何在多个输入字段上使用data-fieldname插入这些值。
手动我可以逐个插入:
$('[data-fieldname="first_name"]').val(d['first_name']);
$('[data-fieldname="last_name"]').val(d['last_name']);
$('[data-fieldname="mobile_no"]').val(d['mobile_no']);
是否有更好的方法可以将值从一个页面传递到另一个页面。
先谢谢
答案 0 :(得分:1)
如果您传递url中的对象,它只会将对象的结果写入字符串(您看到的[object%20Object]),您需要这样做:
window.location = 'update_page2.html?data=' + JSON.stringify(data)
这会将对象结构作为字符串传递(&#34; {test:&#39; test&#39;}&#34;而不是[object%20Object])
然后,要检索数据只需执行JSON.parse(变量)
此外,在我看来,更优雅的方法是使用localStorage,这样你的网址就不会被改变并显示丑陋的json,你可以这样做:
localStorage.setItem("localstorage_test", JSON.stringify({test:'test', test2:'test2'}));
然后,检索它:
JSON.parse(localStorage.getItem("localstorage_test"))
这将在页面之间起作用,因为数据将存储在用户的浏览器中(不在第一个js范围内的本地)