作为一枚PHP程序猿,前端知识不是很精通,在之前的开发过程中就遇到过类似的问题,想要在js代码其他地方使用ajax中返回的数据,但是输出后却是空的,想着是变量作用域的问题,试了几次均失败,就采用其他方法解决了。
这次遇到同样的问题,百度了一下,原来解决是如此简单。
var result="";
$.ajax({
type: "post",
url: "../reportRule/main.do?method=selectReportToAdd",
data:{},
success: function(msg){
result = msg;
alert(result );\\有数据
}
});
console.log(result)\\无数据
原因:
ajax是异步请求,即javascript是非阻塞运行的,在$.ajax还没运行完alert命名可能就执行了,当然第二个alert的时候是没有数据的
解决办法: 将ajax设置为同步请求,设置$.ajax的async属性为false。
var result="";
$.ajax({
type: "post",
async:false,
url: "../reportRule/main.do?method=selectReportToAdd",
data:{},
success: function(msg){
result = msg;
alert(result );\\有数据
}
});
console.log(result)\\有数据