2016-09-17 4 views
0

Я использую LocalStorage для хранения имени пользователя и пароля в приложении, которое я создаю с помощью PhoneGap для iOS. Когда я запускаю приложение на своем iPad, я ввожу имя пользователя и пароль, закрываю приложение, а затем снова открываю, чтобы ввести другое имя пользователя и пароль. Когда я подключаю свой iPad с моим Macbook и открываю веб-инспектор Safari для проверки моего приложения на iPad, когда я перехожу к «Storage -> localStorage» внутри инспектора, отображается только последнее введенное имя пользователя и пароль, но первый набор от имени пользователя и пароля, который я ввел, нет, где можно найти. У кого-нибудь есть идеи относительно того, почему это происходит?LocalStorage только сохраняет последние введенные данные

ЯШ:

<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> 

Я попытался искал повсюду вокруг веб-инспектора, но все еще не мог найти, где мой первый набор хранимых данных пошел. Что-то не так с кодом?

+1

LocalStorage хранит только пары с ключом, если вы делаете setItem предыдущий элемент занижен –

+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

Почему вы опубликовали два ответа? – vlaz

+0

спасибо, но он по-прежнему перезаписывает имя пользователя. Теперь я просто сосредоточен на сохранении имен пользователей, и если это сработает, я смогу интегрироваться в пароль и т. Д. Мой код: var localObject = []; var username = document.getElementById ("username"). Value; localObject.push (имя пользователя); window.localStorage.setItem ("uname", JSON.stringify (имя пользователя)); 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"). Value; var password = document.getElementById ("пароль"). Значение; var date = new Date(); window.localStorage.setItem ("date", JSON.stringify (дата)); window.localStorage.setItem ("uname", JSON.stringify (имя пользователя)); window.localStorage.setItem («pass», JSON.stringify (пароль)); предупреждение («Ваши данные сохранены»); }, но он все еще перезаписывает значение при просмотре в веб-инспекторе – 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")));