Javascript 使用jQuery mobile和PhoneGap存储表单数据并将其发送到localStorage和Web服务器
我正在Eclipse上用jQuery mobile和PhoneGap(Android)开发一个应用程序。我正在用我的chrome浏览器测试这个应用程序(index.html) 我想建立一个登录系统,所以我有两个页面:登录和注册,都是html表单。现在,我想将来自注册的表单数据存储在localStorage(电子邮件和登录标志)中,并将数据(电子邮件和密码)也发送到node.js Web服务器(尚未实现,因为不知道如何实现) 我试过这么做,但没用。我已经在浏览器(Chrome)中打开了注册表,并调用了JavaScript控制台(Resources->Local Storage),但是没有数据 然后我想在登录页面中显示数据,但这也不起作用 这是我的密码: 或在此: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)中打开了注册表,并调
<!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>