【问题标题】:Problems in saving text to a file in Javascript?在 Javascript 中将文本保存到文件时出现问题?
【发布时间】:2016-11-17 08:55:27
【问题描述】:

我正在学习 javascript,因此我尝试使用 Javascript 将字符串附加到文本文件中。我尝试了以下但由于某种原因没有任何反应。我哪里做错了?我在 Mozilla firefox 浏览器上运行代码。

<%-- 
    Document   : demo
    Created on : 17 Nov, 2016, 11:01:01 AM
    Author     : user
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>

          <button onclick="WriteFile()">Click me</button>  
            <p id="demo"></p>


<script type="text/javascript">
    function myFunction() {
    document.getElementById("demo").innerHTML = "Hello World";
}
   function WriteFile()
{

    var fh = fopen("C:\\javascriptlogs\\myfile.txt", 3); // Open the file for writing

    if(fh!=-1) // If the file has been successfully opened
    {
        var str = "Some text goes here...";
        fwrite(fh, str); // Write the string to a file
        fclose(fh); // Close the file
    }

}


    </script>

     </body>
</html>

【问题讨论】:

  • 按 F12。看控制台。 Rethink your approach
  • 我不知道javascript有fopen函数?
  • javascript 是客户端。 fwrite(),fclose()都是php .webdeveloper.com/forum/…
  • 据我所知,您将无法正常执行此操作(由于 Javascript 在任何计算机上写入文件的安全性问题,让它们成为您的服务器或客户端)。我见过 Javascript 直接写入服务器上文件的唯一方法是在节点服务器上运行应用程序。

标签: javascript


【解决方案1】:

不幸的是,JavaScript 没有其他编程语言中已知的 fopen 函数。 Javascript 通常无法在新浏览器中访问本地文件,但 XMLHttpRequest 对象可用于读取文件。所以实际上是 Ajax(而不是 Javascript)在读取文件。

这是一个可以帮助您入门的小示例。

var txt = '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
  if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
    txt = xmlhttp.responseText;
  }
};
xmlhttp.open("GET","abc.txt",true);
xmlhttp.send();

【讨论】:

  • 你在哪里调用了“txt”变量?
【解决方案2】:

fopenfwritefclose 是未定义的浏览器 JavaScript 函数,浏览器 JavaScript 在设计上无法直接访问本地计算机的文件系统。如果是这样,任何网站都可以从您的计算机中读取文件——这将是非常令人担忧的,因为大多数人都在其中存储了个人资料!

您可以使用node.js 来执行此操作,但不会在浏览器中运行。

【讨论】:

    最近更新 更多