Javascript 使用jQuery mobile和PhoneGap存储表单数据并将其发送到localStorage和Web服务器

Javascript 使用jQuery mobile和PhoneGap存储表单数据并将其发送到localStorage和Web服务器,javascript,jquery,html,jquery-mobile,cordova,Javascript,Jquery,Html,Jquery Mobile,Cordova,我正在Eclipse上用jQuery mobile和PhoneGap(Android)开发一个应用程序。我正在用我的chrome浏览器测试这个应用程序(index.html) 我想建立一个登录系统,所以我有两个页面:登录和注册,都是html表单。现在,我想将来自注册的表单数据存储在localStorage(电子邮件和登录标志)中,并将数据(电子邮件和密码)也发送到node.js Web服务器(尚未实现,因为不知道如何实现) 我试过这么做,但没用。我已经在浏览器(Chrome)中打开了注册表,并调

我正在Eclipse上用jQuery mobile和PhoneGap(Android)开发一个应用程序。我正在用我的chrome浏览器测试这个应用程序(index.html)

我想建立一个登录系统,所以我有两个页面:登录和注册,都是html表单。现在,我想将来自注册的表单数据存储在localStorage(电子邮件和登录标志)中,并将数据(电子邮件和密码)也发送到node.js Web服务器(尚未实现,因为不知道如何实现)

我试过这么做,但没用。我已经在浏览器(Chrome)中打开了注册表,并调用了JavaScript控制台(Resources->Local Storage),但是没有数据

然后我想在登录页面中显示数据,但这也不起作用

这是我的密码:

或在此:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <script src="js/jquery.validate.js"></script>
    <script src="js/matchPassword.js"></script>
    <script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
</head>

<body>



    <div data-role="page" id="login">


        <div data-role="content">
            <form action="http://foo.com/login.js" method="POST">
                <div data-role="fieldcontain">
                    <label for="url">E-Mail</label>
                    <input name="uid" id="email" placeholder="" value="" type="email" class="required">
                </div>
                <div data-role="fieldcontain">
                    <label for="url">Password</label>
                    <input name="upwd" id="pwd" placeholder="" value="" type="password" class="required">
                </div>
                <input type="submit" data-theme="b" value="Login">
            </form>
            <p id="myResults">myResults: </p>

        </div>

        <div data-theme="a" data-role="footer" data-position="fixed">
            <div data-role="navbar" data-iconpos="top">
                <ul>
                    <li><a href="#registration" data-transition="fade" data-theme="" data-icon="edit">Register</a></li>
                </ul>
            </div>
        </div>


        <script type="text/javascript" charset="utf-8">
        $('#login').on("pagecreate", function() {

        // Wait for device API libraries to load
            //document.addEventListener("deviceready", onDeviceReady, false);

            // device APIs are available
            //function onDeviceReady() {
                var userEmail = window.localStorage.getItem("localEmail");
                var userFlag = window.localStorage.getItem("localLoggedIn");
                document.getElementById("myResults").innerHTML = userEmail;
            //}
            //}
        });
        </script>

    </div>

电子邮件
暗语

myResults:

$('#login')。在(“pagecreate”,function()上{ //等待加载设备API库 //文件。添加的监听器(“deviceready”,OnDeviceraddy,false); //设备API可用 //函数ondevicerady(){ var userEmail=window.localStorage.getItem(“localEmail”); var userFlag=window.localStorage.getItem(“localLoggedIn”); document.getElementById(“myResults”).innerHTML=userEmail; //} //} });


电邮:
密码:
重复密码:
函数存储(){
//等待加载设备API库
//文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
//函数ondevicerady(){
var inputEmail=document.getElementById(“电子邮件”);
setItem(“localEmail”,inputEmail.value);
setItem(“localLoggedIn”,true);
window.location=“#登录”;
//}
}

是否尝试将localStorage.setItem更改为window.localStorage.setItem?是的,但也不起作用。当我尝试提交注册时,很奇怪,登录窗口只显示我的结果。如果我回到注册表,数据仍然在那里。当我再次尝试提交注册时,数据被存储到本地存储中,并显示在登录页面上。我猜问题在于登录页面上JavaScript中的pagecreate。但是我不知道如何解决这个问题。如果你使用weinre,在控制台中输入命令来打印变量值,你会尝试获取值吗?我已经成功地做了好几次了。
    <div data-role="page" id="registration">

        <div data-role="content">
            <form action="#" method="post" id="registerForm">

                <fieldset data-role="fieldcontain"> 
                    <label for="email">E-Mail:</label>
                    <input type="email" name="email" id="email" class="required email" minlength="5">
                </fieldset>

                <fieldset data-role="fieldcontain"> 
                    <label for="password">Password:</label>
                    <input type="password" name="password" id="password" class="required" minlength="5">
                </fieldset>

                <fieldset data-role="fieldcontain"> 
                    <label for="password2">Repeat Password:</label>
                    <input type="password" name="password2" id="password2" class="required passmatch" minlength="5">
                </fieldset>

                <input type="submit" data-theme="b" value="Register" onclick="store()">
            </form>
        </div>  


        <script type="text/javascript">
            function store(){
                // Wait for device API libraries to load
                //document.addEventListener("deviceready", onDeviceReady, false);

                // device APIs are available
                //function onDeviceReady() {
                    var inputEmail = document.getElementById("email");
                    localStorage.setItem("localEmail", inputEmail.value);
                    localStorage.setItem("localLoggedIn", true);
                    window.location="#login";
                //}
            }
        </script>

    </div>

</body>

</html>