Javascript $.GetJson()无法从本地文件夹加载JSON文件

Javascript $.GetJson()无法从本地文件夹加载JSON文件,javascript,jquery,html,json,ajax,Javascript,Jquery,Html,Json,Ajax,这是一个简单的自动完成程序。将读取文本框中输入的值。我们可以在调试时看到它,但是GetJson()属性无法获取JSON文件。 因此程序无法执行 我的代码如下所示 JavaScript代码 getJsonprop无法获取文件。问题的屏幕截图 HTML、CSS和JavaScript位于单个文件中。其名称为Search_Web.html $(文档).ready(函数(){ $(“#搜索”).keyup(函数(){ $(“#结果”).html(“”); var searchField=$(“#搜索”

这是一个简单的自动完成程序。将读取文本框中输入的值。我们可以在调试时看到它,但是
GetJson()
属性无法获取JSON文件。 因此程序无法执行

我的代码如下所示

JavaScript代码
getJson
prop无法获取文件。问题的屏幕截图 HTML、CSS和JavaScript位于单个文件中。其名称为Search_Web.html


$(文档).ready(函数(){
$(“#搜索”).keyup(函数(){
$(“#结果”).html(“”);
var searchField=$(“#搜索”).val();
var表达式=新的RegExp(searchField,“i”);
$.getJSON(“data.json”),函数(数据){
$。每个(数据、函数(键、值){
if(value.name.search(表达式)!=-1 | | value.location.search(表达式)!=-1){
$(“#结果”)。追加(

“等等,您是否正在尝试访问客户端计算机上的文件(显然是因为您没有URL)

这不起作用,但是出于安全考虑,你可以尝试使用它!想象一下,如果我可以创建一个网站,在你的磁盘上搜索文件并将其上传给我。这不是很糟糕吗? 你确定你需要客户端机器上的文件吗?你只是想从服务器上获取JSON,却忘了输入URL吗?你必须知道JS是在客户端机器上执行的(特定于浏览器),而不是在服务器上执行的。你如何确保浏览你页面的每个人都拥有该文件

以下是一些建议:

  • 您可以将JSON中的数据硬编码到JS对象中,然后将其作为脚本加载

  • 如果出于测试目的需要在计算机上模拟服务器,可以使用Node和npm设置一个quick: 或者简单地谷歌如何设置本地主机服务器并选择您的毒药:)

  • 从客户端的机器上读取实际文件是最接近它的。我知道HTML5
    fileReader
    facility确实允许您处理本地文件,但这些必须由最终用户选择


  • 我认为你的解决方案很好,我试着把它放在这里的codesandbox示例上:就AJAX而言,它似乎工作得很好。虽然index.html和data.json需要在服务器上保持在一起。“浏览器控制台我附上了一个我认为错误发生的地方的屏幕截图。”-该屏幕截图中没有错误消息。只要您可以从Url
    http://localhost:60001/data.json
    。如果在浏览器中打开该Url,会发生什么情况?是什么让你说get请求失败?虽然这可能与此相关,但我在问题中没有看到任何迹象表明他们正在尝试g在客户端上打开一个文件。事实上,由于他们将文件内容描述为自动完成数据,因此我严重怀疑他们是否希望该文件驻留在用户的计算机上。脚本标记是一个HTML标记?其中有一个$.getJSON(“data.json”)…如果文件是远程的,或者我丢失了什么东西,那么应该有URL?我想是的。如果它只是一个文件名,那么它是相对于运行脚本的html文件的位置的。在OP发布的示例中,文件需要位于
    http://localhost:60001/data.json
    ,然后一切都会正常运行k、 此外,如果他们试图打开一个客户端文件,它肯定需要一个完整的Url,但该Url必须以
    文件开始://
    (正如您所说,这不起作用)。选项1不是答案。选项3与此问题无关。选项2不相关。他们已经在本地服务器上运行此功能。请参阅标题为“浏览器控制台”的链接屏幕截图,并注意Url。这也是为什么我99.99%确定他们没有试图从客户端读取文件的原因。我已经解释过了对于您来说,文件名
    data.json
    与调用它的位置有关,并且我已经给了您它希望在其中找到该文件的Url。抱歉,但是这个答案根本不正确。