【问题标题】:Javascript Write to TextfileJavascript写入文本文件
【发布时间】:2016-08-24 12:43:04
【问题描述】:

我正在尝试从表单中获取输入并将其保存到与 html 文件位于同一文件夹中的文本文件中。这是我目前所拥有的:

<!doctype html>

<html lang="en">
<head>
	<meta charset="utf-8">

	<title>Reservation</title>
	<meta name="description" content="The HTML5 Herald">
	<meta name="author" content="SitePoint">

	<link rel="stylesheet" href="css/styles.css?v=1.0">

  	<script>
		function writeToFile(item, name, time)
		{
			alert("Hello " + item);
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			var fh = fso.OpenTextFile("E:/labChart/etc/reserve.text", 8);
			fh.WriteLine(item);
			fh.Close();
		}

		function readFile()
		{
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			var fh = fso.OpenTextFile("reserve.text", 1, false, 0);
			var lines = "";
			while (!fh.AtEndOfStream) {
				lines += fh.ReadLine() + "\r";
			}
			fh.Close();
			return lines;
		}
	</script>
    </head>
	<body>
		Reservation
	  	<br>
	  	<form>
		  	  Item:
		  	  <br>
			  <input type="text" name="item" id="item">
			  <br>
			  Name:
			  <br>
			  <input type="text" name="name" id="name">
			  <br>
			  Time:
			  <br>
			  <input type="date" name="time" id="time">
			  <br>
			  <br>
			  <input type="submit" value="Submit" onclick="writeToFile(document.getElementById('item').value, document.getElementById('name').value, document.getElementById('time').value)">
		</form>
  		<script src="js/scripts.js"></script>
	</body>
    </html>

这确实会从“item”获取信息并将其传递给函数 writeToFile(),因为测试警报确实有效。但是每当我检查文件reserve.text 时,那里没有写任何东西。我对 javascript 很陌生,其中大部分是我看到其他人在网上使用类似效果的代码的合并。有谁知道为什么它不工作?我写的路径不正确吗?我是不是写错了剧本?

【问题讨论】:

  • 这个链接可能会对你正在做的事情有所帮助click here
  • 当你说same folder as the html file - 我认为这不是面向公众的网站页面?
  • activex 已死。把你 20 年前的书扔出窗外。

标签: javascript html


【解决方案1】:

这样做的问题很简单:假设开发人员创建了 javascript 代码来遍历您的所有文件系统并使用虚拟文件填充它,从而在此过程中破坏您的硬盘驱动器?这就是为什么javascript不允许你做这种操作的原因。当我们想要保存信息时,通常是使用服务器端代码而不是客户端计算机完成的(当然,除非我们谈论的是 cookie 之类的东西)。

我回答的重点是让您重新考虑谁在进行储蓄以及在哪里进行储蓄。应该由服务器为用户保存和保留任何信息,因此您不会编写这种 javascript 代码...最好将数据保存在客户端无法控制或编辑的地方,例如在服务器上实例。

我可以建议一些简单的 PHP 代码,而不是存储在文本文件中,而是尝试使用数据库... PHP 是一种服务器端语言,它可以让您将内容保存到服务器计算机上的文件中,但是您的服务器必须能够运行 PHP,大多数计算机没有内置 PHP 语言,因此您还需要一个内置 php 的网络服务器..

【讨论】:

    【解决方案2】:

    在我看来,您的整个方法都很糟糕;您需要学习 PHP 和 mySQL 来存储和加载持久数据。 - 编辑: 从 JavaScript 访问文件系统是一个巨大的安全风险,因此一般不允许。除非您的目标是专门从 JS 编写文件,否则还有更好的选择。

    无论如何,此代码只能在 Internet Explorer 上运行,并且只能在安全设置下降的情况下运行。不过你不应该追求这个。

    如果您的最终目标是编写一个存储和显示预订的网络应用程序,请获取 XAMPP 并查找 PHP + 数据库初学者教程。

    【讨论】:

    • 你需要解释为什么他的方法不好。我想这里 99% 的人都会同意你的观点,但你的回答让人觉得强迫和封闭。
    • 第二段难道不是这种方法不好的一个很好的理由吗?
    • 它并没有真正解释为什么这是一个安全风险,为什么它只适用于 Internet Explorer 以及为什么他应该专门使用 PHP 和/或 mysql。顺便说一句,我没有否决您的答案。我只是评论
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多