Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问上传的JSON文件的数据?_Javascript_Html_Json - Fatal编程技术网

Javascript 如何访问上传的JSON文件的数据?

Javascript 如何访问上传的JSON文件的数据?,javascript,html,json,Javascript,Html,Json,我有如下html代码: <input type="file" id="up" /> <input type="submit" id="btn" /> { "name": "John", "family": "Smith" } 还有一个简单的JavaScript函数: alert_data(name, fam

我有如下html代码:

<input type="file" id="up" />
<input type="submit" id="btn" />
{
 "name": "John",
 "family": "Smith"
}
还有一个简单的JavaScript函数:

alert_data(name, family)
{
     alert('Name : ' + name + ', Family : '+ family)
}
现在我想调用alert_数据,其名称和族存储在使用HTML输入上传的JSON文件中

有没有办法使用HTML5文件读取器或其他东西?
我没有使用服务器端编程,它们都是客户端的。

是的!这可以通过HTML5文件阅读器实现。其实很简单。 将json保存为.js文件,并在我的示例中加载它

{ 姓名:约翰, 家人:史密斯 } 这就是神奇发生的地方:

$up.changefunctionevent{ var uploadedFile=event.target.files[0]; ifuploadedFile.type!==text/javascript&&uploadedFile.type!==application/x-javascript{ AlertError文件类型==+uploadedFile.type; 返回false; } 如果上传文件{ var readFile=新文件读取器; readFile.onload=函数{ var内容=e.target.result; var json=json.parsecontents; 警报(u datajson),; }; readFile.readASTEXTEXTPLOADEDFILE; }否则{ console.log加载文件失败; } }; 函数警报\u datajson { 警报'Name:'+json.Name+',Family:'+json.Family } 使用此代码的Fiddle链接:
uploadedFile.type检查仅在Chrome和firefox中测试,您需要HTML5浏览器,但这是可能的

作用{ 函数onChangeevent{ var reader=新文件读取器; reader.onload=onReaderLoad; reader.readAsTextevent.target.files[0]; } 函数onReaderLoadevent{ console.logevent.target.result; var obj=JSON.parseevent.target.result; 警报_dataobj.name,obj.family; } 函数警报\u数据名,族{ 警报'Name:'+Name+',Family:'+Family; } document.getElementById'file'。addEventListener'change',onChange; }; 选择具有以下格式的文件

async function fileToJSON(file) {
  return new Promise((resolve, reject) => {
    const fileReader = new FileReader()
    fileReader.onload = event => resolve(JSON.parse(event.target.result))
    fileReader.onerror = error => reject(error)
    fileReader.readAsText(file)
  })
}

这里有一个山姆·格林豪斯答案的速记版本,对我很有用

$document.on'change','.file upload button',functionevent{ var reader=新文件读取器; reader.onload=functionevent{ var jsonObj=JSON.parseevent.target.result; alertjsonObj.name; } reader.readAsTextevent.target.files[0]; };
由于所有答案似乎都不必要地复杂,这里有一个简单的函数,它将文件内容作为对象返回:


@Howdy_McGee-Ajax在这方面没有帮助case@Manwal-JSON文件来自客户端系统,它不在服务器上,因此没有URL。有关返回objectPlease的简单函数,请参阅。答案仅仅是一个指向外部网站的链接”。从2019年11月起,这些答案运行良好。我被要求从一个json文件中提取数据