今天要对接后端的接口,自己也没真正系统的学过JavaScript,所以今天就浪费了几个小时来纠结这个问题,对于基本知识很贫瘠,今天纪录下这个问题。
问题情景:
获取后端ajax返回的数据,在上一级函数进行返回
function day1() {
var count = 0;
$(document).ready(function () {
var time = getFormatDate();
var startTime = time + " 00:00:00";
$.ajax({
url: "/admin/web/" + startTime + "/" + 2,
type: "get",
dataType: "json",
async: false,
success: function (data) {
count = data.data;
count = 100;
}
})
})
alert(count);
return count;
}
这是错误的代码,这段代码返回的值一直都是count 最开始声明的值,而ajax里面的值总是晚于day1所返回的值
这里的错误原因就很明显了,
事件都是异步触发的,ajax中设置 async: false为同步,加了$(document).ready()事件又变成异步的了
所以就导致了这个错误结果
解决办法:
$(document).ready()事件去掉,或者用到最外面,变成这样
function day1() {
var count = 0;
var time = getFormatDate();
var startTime = time + " 00:00:00";
$.ajax({
url: "/admin/web/" + startTime + "/" + 2,
type: "get",
dataType: "json",
async: false,
success: function (data) {
count = data.data;
}
})
return count;
}