我偶然发现了一个问题,我正在处理一个将加载单独的 json 文件的 HTML 文件。 HTML 文件在 标签中有 JS 代码,json 文件包含一个包含一些对象的数组。 HTML 和 JSON 都存储在我的硬盘上,我的 HTML 将使用文件路径加载到我 PC 上的文件,而不是互联网上的 URL,到 json 文件,类似于使用相对路径的 img src 标签我电脑上的图像。
这个视频:https://www.youtube.com/watch?v=nx8E5BF0XuE 告诉我,由于 CORS 政策使得 $.ajax 获取存储在他的 PC 上的文件,需要服务器。
我最初在知道该视频之前尝试这样做:
(async () => {
const List = await (await fetch("FileWithObjects.json")).json()
})()
如果我既不想使用服务器也不想使用 node.js,我是否必须在 HTML 文件本身中包含 JSON 数据?
我在网上找不到有用的答案,所以我自己试了一下
您需要一个将 javascript 变量设置为 JSON 的 javascript 文件,而不是 JSON 文件。
HTML 文件通过
<script src
引用本地 javascript 文件
<!DOCTYPE html>
<html>
<head>
<script src="script1.js"></script>
</head>
<body>
<div id="mydiv"></div>
<script>
console.log(j);
setTimeout(() =>
{
document.getElementById("mydiv").innerHTML=j.stuff[2];
} ,
5000
)
</script>
</body>
</html>
这与 index.htm 在同一个文件夹中
注意这是一个 javascript 文件,它将 javascript 变量
j
设置为您想要的 JSON。
j=
{
"stuff": [0,1,2,3,4,5,6]
}
如果你打开网页,你会在静态json文件的左上角看到一个小2
请注意,您只能通过 javascript 操作 JSON(或执行任何非演示“计算”操作)。单独使用 HTML 无法对 JSON 做任何事情。
get
、fetch
、ajax
等所有方法只能从“web服务”加载数据,而这又需要一个web服务器