当前位置: 首页 > 知识库问答 >
问题:

javascript - JS文件如何引入本地JSON文件?

宫子晋
2023-09-27

一个JS文件想使用本地一个JSON文件中的数据
百度了下,发现不能直接去读取这个JSON文件。可以通过JQUERY的一个方法或者new XMLHttpRequest();这样来获取到JSON文件中的内容,不知道还有没有其他更简洁的方法?

https://segmentfault.com/a/1190000038275195

共有1个答案

况明贤
2023-09-27

当然,引入本地JSON文件到JS文件中有多种方法,但大部分浏览器出于安全考虑不允许直接读取本地文件。以下是你提到的两种常见方法:

  1. 使用JQuery的 $.ajax()$.getJSON() 方法:
$.getJSON('yourfile.json', function(data) {    // 在这里使用你的数据    console.log(data);});

或者使用 $.ajax()

$.ajax({    url: 'yourfile.json',    dataType: 'json',    type: 'get',    cache: false,    success: function(data) {        // 在这里使用你的数据        console.log(data);    },    error: function(jqXHR, textStatus, errorThrown) {        // 处理错误        console.error(textStatus, errorThrown);    }});
  1. 使用 XMLHttpRequestfetch

使用 XMLHttpRequest:

var xhr = new XMLHttpRequest();xhr.open("GET", 'yourfile.json', true);xhr.onreadystatechange = function () {  if (xhr.readyState == 4 && xhr.status == 200)    // 在这里使用你的数据,需要通过 `xhr.responseText` 获取 JSON 字符串,然后通过 `JSON.parse(xhr.responseText)` 转换为对象    console.log(JSON.parse(xhr.responseText));}xhr.send();

或者使用现代的 fetch API:

fetch('yourfile.json').then(response => response.json()).then(data => {    // 在这里使用你的数据    console.log(data);}).catch(error => console.error(error));

这些都是常用的方法,但需要注意的是,由于浏览器的同源策略和跨域资源共享 (CORS) 限制,你可能无法直接从本地文件系统读取文件。如果你在本地运行这些代码(例如,通过启动一个本地服务器),你可能会遇到跨域问题。在这种情况下,你可能需要将你的 JSON 文件托管在一个服务器上,然后通过该服务器的URL来访问它。

 类似资料:
  • vite如何导入静态.js文件呢?因为我的项目是monorepo架构的,其中有一个common包被其他vue项目所公共引用,然后这个common包里需要动态加载一些.js、.json文件,如何才能在common包放入这些静态文件并直接导入?我试了函数中使用import可以动态导入一些.json文件,但是对于.js文件导入不了。 之前是分别放在引入common的主项目下的public下,然后使用ax

  • 问题内容: 我正在尝试通过创建一个接受文件路径并将文本的每一行转换为char数组的函数来编写一个简单的文本文件阅读器,但是它不起作用。 这是怎么了? 从先前的版本中稍稍更改了代码后,这似乎仍然不起作用,现在给了我一个例外101。 我已经在Firefox上对其进行了测试,并且可以工作,但是在Google Chrome中它却无法工作,并且一直给我一个异常101。如何使它不仅可以在Firefox上而且还

  • 问题内容: 我正在尝试加载本地JSON文件,但无法正常工作。这是我的JavaScript代码(使用jQuery: test.json文件: 什么都没有显示,Firebug告诉我数据未定义。在Firebug中,我可以看到它是好的且有效的,但是当我复制该行时,这很奇怪: 在Firebug的控制台中,它可以正常工作,并且我可以访问数据。 有人有解决办法吗? 问题答案: 是异步的,所以您应该这样做:

  • 问题内容: 假设我有一个如下所示的javascript对象: 我将其字符串化以转换为JSON。如何将此JSON保存到本地文本文件,以便可以在记事本等中打开它。 问题答案: Node.js: 浏览器(webapi):

  • 本文向大家介绍Vue如何引入远程JS文件,包括了Vue如何引入远程JS文件的使用技巧和注意事项,需要的朋友参考一下 问题 最近在使用 Vue 做东西,用到钉钉扫描登录的功能,这里需要引入远程的 js 文件,因为 Vue 的方式跟之前的不太一样,又不想把文件下载到本地应用,找了一下解决的方法,貌似都需要引入第三方的库,最后找到了解决方案,分享之。 思路 一开始的思路是在 Vue 加载完 Dom 之后

  • import引入本地js文件打包到线上不起作用 本地运行是好的 打包到线上就变成这样了 在本地注释import引入那行代码就是线上没生效这样