11

您好我正在尝试从本地机器读取 .json 文件。它不会在我使用的代码中读取它是:

jQuery.getJSON('../json/test.json') 
    .done(function(data) {
        var test = data;
        alert("sucsess");
    })
    .fail(function(data){
    alert("failed");

});

我从中得到的只是失败了我做错了什么。我不会通过这个服务器。

4

6 回答 6

10

使用文件 API。这是包含示例代码和演示的指南:

于 2012-06-15T08:21:35.257 回答
8

检查这个小提琴

<title>reading Text files</title> 
<body>
    <input type="file" id="files" name="files[]" multiple />
    <output id="list"></output>
    <script>
      function handleFileSelect(evt) {
        var files = evt.target.files; // FileList object

        // Loop through the FileList
        for (var i = 0, f; f = files[i]; i++) {

        var reader = new FileReader();

        // Closure to capture the file information.
        reader.onload = (function(theFile) {
            return function(e) {
                // Print the contents of the file
                var span = document.createElement('span');                    
                span.innerHTML = ['<p>',e.target.result,'</p>'].join('');
                document.getElementById('list').insertBefore(span, null);
            };
        })(f);

        // Read in the file
        //reader.readAsDataText(f,UTF-8);
        //reader.readAsDataURL(f);

        reader.readAsText(f);
        }
    }
    document.getElementById('files').addEventListener('change', handleFileSelect, false);
    </script>
</body>
于 2013-09-18T12:58:18.183 回答
5

抱歉,如果您从本地驱动器运行页面(地址栏的格式为 file:///path 到您的页面),那么您可以从磁盘读取文件,但如果您从网络服务器(http://. .... .) 您无法从本地驱动器读取文件。它可以保护您免于从用户驱动器中窃取信息。您可能需要上传文件才能阅读

编辑:我必须把它拿回来。新浏览器将允许您根据用户事件读取文件。如果用户单击文件输入并打开一个文件,那么您可以阅读它

于 2012-06-15T08:16:46.717 回答
2

由于安全原因等,您无法通过 JavaScript 访问本地计算机上的文件......

JavaScript 和 DOM 为恶意作者提供了通过 Web 传递脚本以在客户端计算机上运行的可能性。浏览器作者使用两个限制来控制这种风险。首先,脚本在沙箱中运行,它们只能执行与 Web 相关的操作,而不是创建文件等通用编程任务。

但我找到了这个网站,但从未尝试过,也许对你有帮助: Reading local files in JavaScript

编辑:如果你永远不会在网络服务器上运行你的代码并且只在你的本地系统上执行它(在浏览器中调用 index.html,比如:C:/Users/user/index.html 你可以访问它,但是如果这个网站应该永远都会上网,我想,那是行不通的

于 2012-06-15T08:16:11.930 回答
0

如果您谈论的是本地(客户端)系统上的文件而不是服务器上的文件,那么使用简单的 javascript 是不可能的。您无法访问本地文件系统资源。

于 2012-06-15T08:17:51.097 回答
0

jQuery.getJSON 调用是异步的,因此您只能在 function(data){...} 中看到您的测试变量

于 2012-06-15T08:19:41.830 回答