Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写javascript代码来更新本地存储数据_Javascript - Fatal编程技术网

如何编写javascript代码来更新本地存储数据

如何编写javascript代码来更新本地存储数据,javascript,Javascript,我正在编辑个人资料页面。该页面将显示用户首次注册帐户时输入的数据。当他们更改显示名称和密码时,我希望将其保存,以便它也更新到本地存储中 当前本地存储显示的内容: {"username":"staff3","name":"alice","password":"123"} 例如,用户将名称更改为ben,将密码更改为1234,本地存储应为 {"username":"staff3","name":"ben","password":"1234"} 如何编写代码来进行此类更改? 请不要给出像“保存密码是

我正在编辑个人资料页面。该页面将显示用户首次注册帐户时输入的数据。当他们更改显示名称和密码时,我希望将其保存,以便它也更新到本地存储中

当前本地存储显示的内容:

{"username":"staff3","name":"alice","password":"123"}
例如,用户将名称更改为ben,将密码更改为1234,本地存储应为

{"username":"staff3","name":"ben","password":"1234"}
如何编写代码来进行此类更改? 请不要给出像“保存密码是个坏主意”这样的评论,因为我这样做是为了一个学校项目


此外,我还想在另一个名为profile page的页面中显示用户信息,该信息将保存在本地存储中,我想将它们显示为profile page信息。如何编写代码?

我建议您使用mysql。使用Mysql,您可以轻松地处理大(或小)数据块。如果您仍然希望对文件执行此操作,我建议将创建的数组保存到文本文件中。如果您想更改某些内容,可以读取文件,对结果和bam使用JSON.parse,您可以循环使用一个数组,找到正确的子数组并更改值。然后,您只需删除该文件并创建一个新文件,其中写入了更改后的数组

现在让我解释一下你是如何完成上述任务的:

首先,您要检查是否已经创建了一个文件,以便我们可以获取内容。为此,您需要使用PHP:

<?php
$filename = 'file.txt';

if (file_exists($filename)) {
    $handle = fopen($filename, "r");
    $fc = fread($handle, filesize($filename));
    fclose($handle);
}else{
    $fc = "none";
}
?>
我们在这里讨论的新条目应该是这样的

var newentry = {"username":"staff3","name":"alice","password":"123"};
现在,我们有了更新的数组,我们使用jquery写入文件。 首先,您需要将jquery包含到您的网站中。为此,您需要将这一行添加到页面的(最好)标题中

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
为了使其工作,您需要创建一个名为script.php的新文件

这就是script.php的外观

if(isset($_POST['data'])){
    $filename = 'file.txt'; //you want to use the same filename as above
    @unlink($filename); //using the @ to not get an error if there is no file to delete, will be important later
    $myfile = fopen("testfile.txt", "w");
    fwrite($myfile, $_POST['data']);
    fclose($myfile);
    echo '1';
}

如果我漏掉了什么或者它给你带来了错误,那就直说吧,我有点匆忙地写了这篇文章:)

警告1-
并非所有浏览器都支持本地存储

警告2-请勿在生产中使用代码片段。这只是为了演示,展示事物是如何工作的

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<form id="profile_details">
<p>Username:    <input type="text" name="username">
<p>Name:    <input type="text" name="name"> <label>New name: </label><label id="new_name"></label>
<p>Password:    <input type="password" name="password"> <label>New password: </label><label id="new_pwd"></label>
<p><input id="sbmtbtn" type="button" value="Submit">
</form>

<script type="text/javascript">
var userDb = localStorage;
window.onload = function() {
    document.querySelector("[name=username]").value = userDb.getItem("username") || "alice";
    document.querySelector("[name=name]").value = userDb.getItem("name") || "Alice" ;
    document.querySelector("[name=password]").value = userDb.getItem("password") || "qwerty";   
}

document.getElementById("sbmtbtn").addEventListener("click", function(){
    var name = document.querySelector("[name=name]").value;
    var password = document.querySelector("[name=password]").value;
    document.getElementById("new_name").innerHTML = name;
    document.getElementById("new_pwd").innerHTML = password.slice(0,1)+"....";  
    userDb.setItem("name", name);
    userDb.setItem("password", password);   
});
</script>
</body>
</html>

用户名:
名称:新名称:
密码:新密码:

var userDb=localStorage;
window.onload=函数(){
document.querySelector(“[name=username]”)。value=userDb.getItem(“username”)| |“alice”;
document.querySelector(“[name=name]”)。value=userDb.getItem(“name”)| |“Alice”;
document.querySelector(“[name=password]”)。value=userDb.getItem(“password”)| |“qwerty”;
}
document.getElementById(“sbmtbtn”).addEventListener(“单击”,函数(){
var name=document.querySelector(“[name=name]”)。值;
var password=document.querySelector(“[name=password]”)。值;
document.getElementById(“新名称”).innerHTML=name;
document.getElementById(“new_pwd”).innerHTML=password.slice(0,1)+“…”;
userDb.setItem(“名称”,名称);
userDb.setItem(“密码”,password);
});

很抱歉,我无能为力,但“在本地存储中存储密码是一个非常糟糕的主意”。要回答您的问题:“我如何编写代码来进行这种更改?”请先阅读以下内容:我以前从未使用过mysql,它是javascript的一部分吗?虽然我同意使用mysql可能是一种可行的方法,但这并不能回答,甚至与OP提出的问题无关。mysql是一个独立的系统,用于管理数据库。在您的情况下,由于这是一个学校项目,而不是某个商业网站,您应该仍然可以使用javascript文件而不必担心哦,非常感谢,但很抱歉,我不知道我在读什么:(如果你不介意的话……我可以在skype或其他网站上添加你,然后与你共享我的屏幕吗?当然可以,给我发一条消息,我很乐意提供帮助。另外,请告诉我你的twitter用户名,这样我就知道我会找对人了。)
   var text = JSON.stringify(contentarray); 
   $.ajax({
      url: "script.php",
      method: "POST",
      data: { data: text },
      success: function(result){
         if(result==1){
             alert("It worked!");
         }else{
             alert("It did not work!");
             console.log(result);
         }
       }
    });
if(isset($_POST['data'])){
    $filename = 'file.txt'; //you want to use the same filename as above
    @unlink($filename); //using the @ to not get an error if there is no file to delete, will be important later
    $myfile = fopen("testfile.txt", "w");
    fwrite($myfile, $_POST['data']);
    fclose($myfile);
    echo '1';
}
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<form id="profile_details">
<p>Username:    <input type="text" name="username">
<p>Name:    <input type="text" name="name"> <label>New name: </label><label id="new_name"></label>
<p>Password:    <input type="password" name="password"> <label>New password: </label><label id="new_pwd"></label>
<p><input id="sbmtbtn" type="button" value="Submit">
</form>

<script type="text/javascript">
var userDb = localStorage;
window.onload = function() {
    document.querySelector("[name=username]").value = userDb.getItem("username") || "alice";
    document.querySelector("[name=name]").value = userDb.getItem("name") || "Alice" ;
    document.querySelector("[name=password]").value = userDb.getItem("password") || "qwerty";   
}

document.getElementById("sbmtbtn").addEventListener("click", function(){
    var name = document.querySelector("[name=name]").value;
    var password = document.querySelector("[name=password]").value;
    document.getElementById("new_name").innerHTML = name;
    document.getElementById("new_pwd").innerHTML = password.slice(0,1)+"....";  
    userDb.setItem("name", name);
    userDb.setItem("password", password);   
});
</script>
</body>
</html>