Javascript 在reactjs react.Component中的异步AJAX请求之后无法获取

Javascript 在reactjs react.Component中的异步AJAX请求之后无法获取,javascript,jquery,ajax,reactjs,components,Javascript,Jquery,Ajax,Reactjs,Components,我的reactjs代码有问题。我已经阅读了关于异步世界和可能出现的问题的线程,我想我已经解决了这个问题,但是现在我得到了一个空白,文本为Cannot get/thenameofpage 这是我在react.Component之后的代码 getList() { var returnValue; $.ajax({ type: "get", url: "###URL###", cache: false, async:

我的reactjs代码有问题。我已经阅读了关于异步世界和可能出现的问题的线程,我想我已经解决了这个问题,但是现在我得到了一个空白,文本为Cannot get/thenameofpage

这是我在react.Component之后的代码

getList() {
    var returnValue;
      $.ajax({
        type: "get",
        url: "###URL###",
        cache: false,
        async: false,
        success : function(data) {
         returnValue = data;
        }
      });

    return returnValue;
  }
这是render()之后的代码{

如果我控制台登录函数,则一切正常。但当我尝试将其传递给变量时,一切都会中断。我执行了异步。不工作。我尝试使用初始状态,ComponentDidMount()再次不工作

附言

我尝试使用internet指南:

constructor() {
    this.state = { data: [] };
  }
  getList() {
    $.ajax({
      type: "get",
      url: "http://havvamustafa.devel.signature.eu.com/manage/collection/list_all_ajax",
      cache: false,
      dataType: 'json',
      success: (data) => {
        this.setState({data: data});
      }
    });
  }
然后

最后呢

console.log(this.state.data);

现在,由于构造函数的原因,它给了我一个错误。

从Jquery$.ajax的文档中,不推荐使用
async:false

异步(默认值:true)

类型:布尔型

默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和数据类型:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。从jQuery 1.8开始,在jqXHR($.Deferred)中使用async:false已弃用;您必须使用success/error/complete回调选项,而不是jqXHR对象的相应方法,如jqXHR.done()或弃用的jqXHR.success()。

我不知道您在处理异步数据获取时会想到什么样的问题,但请不要忘记,使用同步请求会在请求挂起时冻结浏览器。您可以通过执行以下操作来简化:

getList() {
  $.ajax({
    type: "get",
    url: "###URL###",
    cache: false
  }).done(this.handleSuccess);
},

handleSuccess(results) {
  this.setState({data: results});
}

您的数据处理是在另一个方法中完成的,它会更干净!

它不工作。或者我做得不正确。我添加了您的代码。然后添加了getInitialState(){return{data:[]};},然后添加了:componentDidMount(){this.getList;}和render if(jQuery.isEmptyObject(this.state.data)){console.log(“无数据”);}其他{console.log(this.state.data);}但它又给了我一个空白页,无法获取。如果我试图通过链接转到该页,那么它会显示控制台:Uncaught TypeError:无法读取nullconstructor()的属性“data”{super();this.getList=this.getList.bind(this);this.state={data:[]};}。它成功了。谢谢你。非常感谢你。天哪,谢谢你。@g9m29:如果这是解决方案,请接受它。要这样做,请单击左侧的勾号图标,使其变为绿色。这就是我们在此处标记问题已解决的方式。
console.log(this.state.data);
getList() {
  $.ajax({
    type: "get",
    url: "###URL###",
    cache: false
  }).done(this.handleSuccess);
},

handleSuccess(results) {
  this.setState({data: results});
}