问题产生
function findRecordById(id) {
var recordname;
$.ajax({
type: "post",
url: "/pamm/call/history/location",
data: {recordidId:id},
success: function (data, status) {
if (data != null) {
recordname = data;
}
else{
MessageBox.alert({message: "获取录音失败!"});
}
},
error: function () {
alert("调用异常,操作失败!");
},
complete: function () {
}
});
return recordname;
}
ajax虽然获取到了后端返回的成功数据,但不能赋值给recordname并返回:
问题解决
设置:async:false 即可解决。
原理
ajax默认是异步加载的,所以async默认值是 true,ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,才会触发ajax里的success方法,是两个线程,所以才获取不到返回值。
但我们将async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,其它操作必须等待请求完成才可以执行,这样就可以获得并使用success里的返回参数。