使用js / jquery

时间:2016-12-24 12:02:10

标签: jquery html

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']);

是否有更好的方法可以将值从一个页面传递到另一个页面。

先谢谢

1 个答案:

答案 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范围内的本地)