Javascript 在reactjs react.Component中的异步AJAX请求之后无法获取
我的reactjs代码有问题。我已经阅读了关于异步世界和可能出现的问题的线程,我想我已经解决了这个问题,但是现在我得到了一个空白,文本为Cannot get/thenameofpage 这是我在react.Component之后的代码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:
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});
}