2016-09-17 5 views
0

私はLocalStorageを使用してiOS用のPhoneGapで構築しているアプリケーションにユーザー名とパスワードを保存しています。 iPadでアプリを実行したときに、ユーザー名とパスワードを入力してアプリを終了し、もう一度開いて別のユーザー名とパスワードを入力します。私のiPadをMacbookに接続し、Safari Webインスペクタを開いてiPadで実行中のアプリケーションを検査すると、インスペクタ内の「Storage - > localStorage」に行くと、最後に入力したユーザ名とパスワードだけが表示されますが、入力したユーザー名とパスワードはどこに見つかりませんか?誰がなぜこのようなことが起こるかについてのアイデアはありますか?LocalStorageは最後に入力したデータのみを保存します

JS:

<script type="text/javascript"> 
document.addEventListener("deviceready",onDeviceReady,false); 

function onDeviceReady() { 
document.getElementById("btnSave").addEventListener("click",saveData,false); 
document.getElementById("btnGet").addEventListener("click",getData,false); 
} 

    function saveData(){ 
     var username = document.getElementById("username").value; 
     var password = document.getElementById("password").value; 
     window.localStorage.setItem("uname", username); 
     window.localStorage.setItem("pass", password); 
     alert("Your data is stored"); 
    } 
    function getData(){ 
     var output="Your username is " + window.localStorage.getItem("uname") + "and your password is " + window.localStorage.getItem("pass"); 
     document.getElementById("result").innerHTML = output; 
    } 
</script> 

HTML:

User Name: <input type ="text" id="username" /><br /> 
    Password: <input type="text" id="password" /><br /> 
    <button id="btnSave"> Save Data </button> 
    <button id="btnGet"> Get Data </button> 
    <div id="result"></div> 

私は、Webインスペクタの周りにどこでも探してみましたが、まだ保存されているデータの私の最初のセットはどこに行った見つけることができませんでした。コードに何か問題がありますか?

+1

setStemを実行すると、以前のアイテムがオーバーライドされた場合、LocalStorageストアのキー値のペアのみ –

+0

あなたが行っていることは、localstorageにユーザー名とパスワードを格納することが間違っています。これを克服して、それらのユーザーをどのように検証するつもりですか? – Zeeshan

+0

私はちょうど練習としてユーザー名を使用していますが、私が保存したいのは実際はボタンクリックですが、私がオンラインで見つけた例はユーザー名に基づいているため、動作すればボタンをクリックすることができます。 – michelle9090

答えて

0

ユーザーの詳細情報を格納しようこの

var localObject = []; 
var testObject = {userName : "firstUser", password : "password1"}; 
localObject.push(testObject); 
localStorage.setItem("userDetails", JSON.stringify(localObject)); 
console.log(JSON.parse(localStorage.getItem("userDetails"))); 

//for second time 
var testObject = {userName : "secondUser", password : "password2"}; 
localObject.push(testObject); 
localStorage.setItem("userDetails", JSON.stringify(localObject)); 
console.log(JSON.parse(localStorage.getItem("userDetails"))); 

たびに試してみてください試してみてください、ローカルストレージを取得ユーザーの詳細をオブジェクトとして配列にプッシュします。

+0

なぜ2つの回答を投稿しましたか? – vlaz

+0

ありがとうが、それでもユーザー名は上書きされます。私はちょうどユーザー名を保存することに焦点を当てています。もしうまくいけば、パスワードなどに統合することができます。私のコード:var localObject = []; var username = document.getElementById( "username")。value; localObject.push(username); window.localStorage.setItem( "uname"、JSON.stringify(username)); console.log(JSON.parse(localStorage.getItem( "uname"))); アラート(あなたのデータは保存されています); – michelle9090

0

LocalStorageは、キー値のペアを格納するだけです。複数の値が回避策を使用し保存するには:

str=localStorage.getItem("users"); 
if(str==""){ 
str="[]"; 
} 
users=JSON.parse(str); 
//users contains an array now 
users.push("John"); 
//add a user 
localStorage.setItem("users",JSON.stringify(users)); 
//create json and store it again 
+0

ありがとうございます。私は自分のコードを次のように変更しました:function saveData(){ var username = document.getElementById( "username")。 var password = document.getElementById( "password")。value; var date = new Date(); window.localStorage.setItem( "date"、JSON.stringify(date)); window.localStorage.setItem( "uname"、JSON.stringify(username)); window.localStorage.setItem( "pass"、JSON.stringify(password)); アラート(あなたのデータは保存されています); }でも、Webインスペクタで表示されたときに値を上書きします – michelle9090

+0

@ michelle9090:もう一度私の答えを読んでください... –

0

が、これは

var localObject = []; 
localObject = localStorage.getItem("userDetails"); 
var testObject = {userName : "firstUser", password : "password1"}; 
var testArray = localObject.push(testObject); 
localStorage.setItem("userDetails", JSON.stringify(testArray)); 
//to fetch the data 
localStorage.getItem("userDetails"); 
console.log (JSON.parse(localStorage.getItem("userDetails"))); 

//for second time 
var localObject = localStorage.getItem("userDetails"); 
var testObject = {userName : "secondUser", password : "password2"}; 
testArray = localObject.push(testObject); 
localStorage.setItem("userDetails", JSON.stringify(testArray)); 
console.log (JSON.parse(localStorage.getItem("userDetails"))); 
関連する問題