|
在vue中定义一个全局变量
data(){
return{
info:{}
}
}简写一段ajax请求 $.ajax({
url: "./jfdata.json",
data:requestData,
type: "GET",
success: function(data){
this.info=data
console.log(this.info)//info的值为请求返回的data的值
}
});
console.log(this.info)//info的值依旧为定义的值在页面渲染 info<p>pw_info</p>完成上面三步,你会发现页面渲染的info还是定义的值,并未拿到ajax返回值。原因:默认的ajax 方法是异步请求,在整个页面加载后,才执行了ajax方法。 那么如何解决这个问题呢?下面提供了几个方法 方法一.最直接的办法:异步改同步 $.ajax({
url: "./jfdata.json",
data:requestData,
type: "GET",
async:false,//像这样加一行
success: function(data){
this.info=data
console.log(this.info)//info的值为请求返回的data的值
}
});
console.log(this.info)//info的值为请求返回的data的值注意,如果你的请求有dataType:"jsonp"异步改同步是不起作用的,可以切换其他方式处理跨域方法二.setTimeout(适用于在请求之前操作简单的时间短的情况)思路:用setTimeout包起来,设置时间为0,抢在页面加载前执行ajax请求 setTimeout(function(){
$.ajax({
url: "./jfdata.json",
data:requestData,
type: "GET",
success: function(data){
this.info=data
console.log(this.info)//info的值为请求返回的data的值[/color]
}
});
console.log(this.info)//info的值为请求返回的data的值
},0) |
|
|
沙发#
发布于:2019-10-30 12:25
楼主这个方法是可以但是我觉得你也可以试试 this.$nextTick哈哈,个人觉得
|
|
|
板凳#
发布于:2019-10-28 10:06
|
|
|