How do I read a JSON file using HTML?
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12
< script type= "text/javascript"
src= "http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" >
$( function ( ) {
var thing = [ ] ;
var bar = $.getJSON ( 'C:\U sers\c ccompro\f oo.json' , function ( obj) {
for ( i = 0 ; i < obj.length ; i++ ) {
thing.push ( obj[ i] ) ;
}
} ) ;
} ) ;
我不确定为什么它不起作用。" foo.json"包含一个对象数组。
您似乎没有对thing 做任何事情。您怎么知道它不起作用?
当您使用console.log(obj)时会看到什么
您不能用这样的浏览器读取/写入本地文件。您需要从Web服务器提供foo.json 。
如何获取JavaScript以从.json文件读取的可能重复项?
您尝试使用哪种浏览器?铬还是铬?
@RPGillespie"您不能用这样的浏览器读取/写入本地文件。"那并不完全准确。是的,可以从本地文件系统请求文件。从技术上讲,可以使用浏览器技术写入本地文件系统。
注意:html 是一种标记语言,在html5标准中定义了js API,但是读取是使用js而不是html完成的。
@ guest271314是的,但是OP很显然是一个初学者,并且不了解基本的Web技术。我没有将他指向技术上正确的X问题解决方案,而是将其视为潜在的XY问题,并引起他注意以下事实:通常来说,您需要一个Web服务器来完成获取文件的常见任务。
@RPGillespie OP正在尝试尝试流程并在本地进行开发。请参阅--allow-file-access-for-files"默认情况下,file:// URI无法读取其他file:// URI。对于需要旧行为进行测试的开发人员来说,这是一个替代方法。"无需在本地开发Web服务器;浏览器可以用作服务器;可以从本地文件系统请求文件。 OP可能根本不了解在某些浏览器上进行本地开发所需的过程。
如果要在Chrome或Chromium浏览器上的"问题"中尝试代码,请启动设置了--allow-file-access-from-files 标志的浏览器实例。请注意,启动浏览器时应关闭打开的Chrome或Chromium实例,否则将使用打开的浏览器实例的配置文件夹(而不是设置标志)启动该实例。您可以在打开现有实例的情况下启动Chrome或Chromium,并通过使用--user-data-dir 标志(其值设置为与打开的Chrome或Chromium实例不同的目录)来使用该标志。
从技术上讲,也可以在不使用window.webkitRequestFileSystem 扩展名的情况下写入用户文件系统。尽管在扩展名中使用chrome.fileSystem ,但提供了旨在实现读/写的API。
看到
jQuery load()仅在Firefox中工作?
使用JS读取本地XML
如何使用JavaScript写入文件(用户目录)?
如何在文件:协议上使用webkitRequestFileSystem
JavaScript / Ajax写入文件
使用 元素
未经浏览器许可,您无法直接从用户硬盘读取文件。即使您有办法允许这样做,也将是一个巨大的安全性问题(结帐客人的回答)。
但是,您可以尝试使用户选择文件,然后使用Javascript读取文件。
这称为HTML 5文件API。
但是,这不适用于任何浏览器,在这种情况下,您可能仍然必须使用服务器。
有关此结帐本或这篇文章的更多信息。
"您不能直接从用户硬盘驱动器中读取文件"看来OP并没有试图从另一个用户硬盘驱动器中读取文件,而是试图从他们自己的硬盘驱动器中读取文件。
@ guest271314据我所知,没有一种独特的,也不干净的方法可以在所有浏览器上使用。 我认为使用HTML 5文件API是最好的方法。 如果您知道另一种方式,我想听听:)
同意使用File API是针对OP特定要求的最通用方法。 OP似乎正在使用Chrome或Chromium,或者它们不会在Firefox上收到错误(未描述)。 有关铬,铬的几种选择,请参见下文。 也可以使用 元素在document 处加载文件
使用File API进行写入/读取/写入编辑,保存,自我修改HTML文档; 格式生成的HTML,JavaScript