作为一枚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)\\有数据