使用jQuery读/写文件

时间:2009-02-24 15:49:30

标签: jquery file

有没有办法让jQuery从文件中获取信息?可能吗?怎么样?

7 个答案:

答案 0 :(得分:74)

不,JavaScript没有写文件的权限,因为这至少可以说是一个巨大的安全风险。但是,如果你想在服务器端获取/存储信息,你当然可以对PHP / ASP / Python /等进行Ajax调用。然后可以在服务器中获取/存储数据的脚本。如果您的意思是在客户端计算机上存储数据,那么仅使用JavaScript是不可能的。我怀疑Flash / Java可能,但我不确定。

如果您只是尝试在特定用户的不可靠时间段内存储少量信息,我认为您需要Web Storage API或Cookie。不过,我不确定你的问题是什么。

答案 1 :(得分:37)

是的,这是可能的。

该技术描述如下

http://jquery.tiddlywiki.org/twFile.html

答案 2 :(得分:16)

HTML5和Google Gears都主要通过嵌入式SQLite API添加本地存储功能。

答案 3 :(得分:11)

使用javascript的execCommand('SaveAs', false, filename);功能

编辑:不再有效。此Javascript函数曾用于所有浏览器,但现在仅在IE上,由于浏览器安全性的考虑。它向通过浏览器运行此功能的用户提供了“另存为”对话框,用户按OK,文件通过javascript保存在服务器端。

现在这段代码是一个罕见的古董零日收藏品。

// content is the data (a string) you'll write to file.
// filename is a string filename to write to on server side.
// This function uses iFrame as a buffer, it fills it up with your content
// and prompts the user to save it out.
function save_content_to_file(content, filename){
    var dlg = false;
    with(document){
     ir=createElement('iframe');
     ir.id='ifr';
     ir.location='about.blank';
     ir.style.display='none';
     body.appendChild(ir);
      with(getElementById('ifr').contentWindow.document){
           open("text/plain", "replace");
           charset = "utf-8";
           write(content);
           close();
           document.charset = "utf-8";
           dlg = execCommand('SaveAs', false, filename);
       }
       body.removeChild(ir);
     }
    return dlg;
}

调用如下函数:

msg =  "I am the president of tautology club.";
save_content_to_file(msg, "C:\\test");

答案 4 :(得分:9)

您需要通过Web编程语言处理文件访问,例如PHP或ASP.net。

要设置它,你会:

  • 创建一个处理文件读写的脚本。这应该对浏览器可见。

  • 将jQuery ajax请求发送到该脚本,该脚本可以写入数据或读取数据。您需要通过请求参数传递所有读/写信息。您可以在jQuery ajax文档中了解更多相关信息。

确保您清理正在存储的任何数据,因为这可能存在安全风险。但是,这实际上只是标准的平面文件数据存储,并不一定非同寻常。

Paolo指出,没有办法通过jQuery或任何其他类型的javascript直接读/写文件。

答案 5 :(得分:5)

Cookies是您最好的选择。寻找jquery cookie插件。

Cookie是针对这种情况而设计的 - 您希望在客户端保留有关此客户端的一些信息。请注意,Cookie会在每个Web请求中来回传递,因此您无法在其中存储大量数据。但只是对问题的简单回答应该没问题。

答案 6 :(得分:1)

如果你想在页面中没有一堆服务器端处理的情况下这样做,那么将文本值放入隐藏字段(使用PHP)可能是一个可行的想法。然后你可以使用jQuery来处理隐藏的字段值。

无论你的船漂浮着什么:)