如何在Phonegap中使用JavaScript将数据从一个html页面传递到另一个html页面?

3
我已经创建了两个HTML页面page1.htmlpage2.html。在page1.html中,我有三个文本字段和一个提交按钮,在page2.html中,我有一个列表视图。因此,当我填写文本并在page1.html中单击提交按钮时,数据应该出现在列表视图中。请协助我。 提前致谢。
3个回答

5

解决方案:

(1). 将page2的html元素加载到当前DOM中也是可能的,但你需要学习如何处理JQM中的DOM,

示例: 考虑两个HTML文件,分别命名为第一个和第二个,每个文件都包含五个页面。在加载时,只有第一个HTML文件将完全加载到DOM中,即使第一个页面已显示给您,其余页面仍将被隐藏并由JQM部分加载。到目前为止一切都好,但一旦尝试导航到不同文件中的页面,则会出现问题。

例如,现在您在第1页(first.html)中,尝试使用($.mobile.load..)导航到第二个文件中的第3页。它只会将第二个文件中的第3页HTML元素加载到当前DOM中,而其他部分(包括该页事件)将被忽略。

(2). 使用localStorage最适合传递值到外部文件。

代码:

page1.httml

var listvalues = { "1": "value1", "2": "value2", "3": "value3" }
*// OR IF INTPUT IS INSIDE FORM BETTER USER JQUERY SERIALIZER var listvalues = $("#form").serialize();*
    localStorage.setItem('lists', JSON.stringify(listvalues)); 

page2.html

var listvalues = localStorage.getItem('lists');
//pase the value 
var finalvalue = JSON.parse(listvalues);
// it look like this { "1": "value1", "2": "value2", "3": "value3" };

(3). 您也可以尝试使用sessionStorage来实现相同的功能。

(4). 如果是多页面架构,请在公共文件中声明变量并使用全局变量。


@user3132144,感谢您接受了这个答案,朋友。 - kamesh
嗨Kamesh,你能帮我吗..我可以在第二个屏幕上看到我在第一个屏幕上输入的数据。我的要求是,在列表中显示数据(使用jQuery)。因此,当我在第一个屏幕上不断提交(添加)时,数据应该添加到listview(第二个屏幕)中。提前致谢。 - mounika
@user3132144 在第一页提交按钮时添加数据并将其存储在本地存储中,在第二页获取该值。我已经创建了一个fiddle,请检查它.. http://jsfiddle.net/koushikKumar/2zX5J/1/ - kamesh

1
在page1.html脚本中,您可以通过URL(GET)方法处理文本字段的值,并通过脚本访问它,在page2.html中像下面这样。

page1.html:

$(#submit').click(function{
   window.location.href="page2.html?text1="+$('#text1').val()...etc
});

page2.html:

$(document).ready(function(){
 var idx = document.URL.indexOf('?text1=');
 if (idx !== -1) {
    //take each textfield values from the "document.URL" using substring function
 }
});

0
// page1.html
// build an object
window.onload = function() {
    var form = document.getElementById("my-form");        
    form.submit.onclick = function() {
        var obj = {};
        obj.full_name = form.full-name; // string
        obj.age = form.age;         // number
        obj.location = form.location;   // string     
        // store it into locale storage as a string
        localStorage.setItem("obj", JSON.stringify(obj));
        form.submit();
    }
}
// page2.html
// retrieve it back from storage 
var obj = localStorage.getItem("obj");
// use it
console.log(JSON.parse(obj));
// or
// for (var prop in obj) { console.log(obj[prop]); }

谢谢您的回复。 我能够将数据传递到下一页,但是它没有显示在列表上。这可能是怎么回事? - mounika
@user3132144 你在开玩笑吗? - hex494D49
不行。我可以在第二个屏幕上看到我在第一个屏幕上输入的数据。我的要求是,它应该在列表视图(使用jQuery)中显示数据。因此,当我在第一个屏幕上不断提交(添加)时,数据应该添加到列表视图(第二个屏幕)。提前致谢。 - mounika
@user3132144 您已经接受了一个答案,所以我相信您不需要进一步的帮助。 - hex494D49
是的,当然可以。但我想在列表中看到数据 :(。请帮帮我。 - mounika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接