【发布时间】:2017-05-25 19:25:24
【问题描述】:
我有一个 ajax 从 db 获取值,并将结果推入一个数组:
function pushPONFail(dt, ct) {
if (ct < 12) {
var tMon = parseInt(dt.getMonth())+1;
var tYear = dt.getFullYear();
ct++;
} else {
return;
}
data = {"qType": 101,
"tbl": 'qualitypqa.dbo.centerthickness',
"month": tMon,
"year": tYear,
"type": 'Lotrafilcon B'};
$.ajax({
cache : false,
url: "getrpt.php",
type: "get",
data: data,
contentType: 'application/json; charset=utf-8',
async: true,
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error: "+textStatus+" : "+errorThrown);
}
})
.done(function(response){
var obj = jQuery.parseJSON(JSON.stringify(response));
arrPONFail.push({Month: months[tMon-1]+"/"+tYear, PONFail: obj[0].PONFail});
dt = new Date(dt.setMonth(parseInt(dt.getMonth()) - 1));
pushPONFail(dt, ct);
});
} // pushing values such as ["May/2017", 0]
$(function() {
var dt = new Date();
pushPONFail(dt, 0);
console.log(arrPONFail);
});
这些是完整的功能。当我 console.log 数组时,它就成了我的照片。我无法提取数据。
当我将数组打印到控制台时,结果如下图所示。
如何从数组中取回值? 当我执行 arrT[0] 时,我得到一个 undefined。
请指教。
【问题讨论】:
-
您在 .done() 之外使用控制台记录 arrT。您应该在 done() 完成后控制台记录 arrT,或者您可以调用超时函数 1000 毫秒然后记录 arrT。你会看到区别。
标签: javascript arrays undefined push