react使用ajax请求返回一个html片段

问题:
使用react用ajax请求本地的一个index.html文件,index.html中只有几个html片段,最后返回得到的结果是dom元素可以正常显示,但是片段中script标签下的脚本没起作用,求大神解答

代码如下:

1、react页面

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <meta charset="UTF-8" />
    </head>
    <body>
        <div id="content"></div>
        <script src="http://static.runoob.com/assets/react/react-0.14.7/build/react.min.js"></script>
        <script src="http://static.runoob.com/assets/react/react-0.14.7/build/react-dom.min.js"></script>        
        <script src="http://static.runoob.com/assets/react/browser.min.js"></script>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script type="text/babel">
 

    class UserGist extends React.Component {

     constructor() {
    super();
    this.state = {
      html: ''
    };    
  }
 
  componentDidMount() {
      
      let _this = this;
      this.serverRequest=$.ajax({
          type:"get",
          dataType:'html',
          url:this.props.source,
          async:true,
          success:function(result){
              var lastGist = result;
              _this.setState({
        html: lastGist
        
      });
          }
      });
        
  }
 
  componentWillUnmount() {
    this.serverRequest.abort();
  }
 
  render() {
    return (
      <div  dangerouslySetInnerHTML={{__html: this.state.html}}></div>
    );
  }
}
 
ReactDOM.render(
  <UserGist source="index.html" />,
 document.querySelector("#content")
);
        </script> 
    </body>
</html>

2、请求的index.html页面

<a id="firstaitem" href="#">Number1</a>
<a href="#" style="color: red;">Number2</a>
<a href="#">Number3</a>

<script type="text/javascript">
    document.getElementById('firstaitem').style.color='green'
</script>

运行结果如下:
使用react中ajax请求index.html返回的页面:

clipboard.png


直接运行index.html的页面:

clipboard.png

相当于使用ajax请求的得到的结果里script下面的这部分代码没执行,求解决。。。

<script type="text/javascript">
    document.getElementById('firstaitem').style.color='green'
</script>

阅读 3.7k
1 个回答

原因是html加载script的时机问题,所以你需要重新执行script脚本。
可参考:eval的使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题