2017-08-13 46 views
0
componentDidMount() { 
    $.ajax({ 
     type: "GET", 
     url: "/tweets", 
     dataType: "json", 
     success: function (data){ 
      //$('#tweetsList').append(data); 
      this.setState({tweetsList: data}); 
     }, 
     error: function (error) { 
      console.log(error); 
     } 
    }); 
} 

上面的代码块给了我一个this.setState函数找不到的错误。我试图从我的Tweets控制器呈现json到我的main.jsx文件。this.setState不是函数rails

+0

ajax调用中此更改的上下文。您需要引用原始上下文。写答案。 –

回答

1

在ajax调用中更改this的上下文。 this不再指您的组件。您需要引用原始上下文。

componentDidMount() { 
    const self = this; 
    $.ajax({ 
     type: "GET", 
     url: "/tweets", 
     dataType: "json", 
     success: function (data){ 
      //$('#tweetsList').append(data); 
      self.setState({tweetsList: data}); 
     }, 
     error: function (error) { 
      console.log(error); 
     } 
    }); 
} 
+0

谢谢。页面呈现没有任何错误。但是,没有数据从控制器呈现。 –

+0

是因为你已经注释掉$('#tweetList')。append(data)'? –

+0

不是。这是无关的。在鸣叫控制器我的索引方法如下所示:DEF指数 \t \t @tweets = Tweet.all \t \t渲染JSON:Tweet.all \t年底 –

0

的问题是你成功的回调函数this指功能,因此没有任何setState方法。你可以通过上下文jQuery的AJAX调用是这样的:

$.ajax({ type: "GET", url: "/tweets", dataType: "json", context: this, success: function (data){ //$('#tweetsList').append(data); this.setState({tweetsList: data}); }, error: function (error) { console.log(error); } });

jQuery ajax docs约上下文属性以获得更多信息。

+0

谢谢。页面呈现没有任何错误。但是,没有数据从控制器呈现。 –

相关问题