我正在使用:
$.post('fromDB.php', function(data) {
eval(data);
console.log(data);
updateTimer();
});
从php获取一些数组。 php返回的内容:
var todayTimeMinutes = [0, 45, 35, 25, 40, 0, 50, 40, 40, 30, 20];
var todayTimeHours = [0, 8, 9, 10, 10, 11, 11, 12, 13, 14, 15];
var todaySectionName = ["Before School", "Period 1", "Period 2", "Formtime", "Interval", "Period 3", "Period 4", "Lunchtime", "Period 5", "Period 6", "After School"];
console.log("Excecution time: 0.00058889389038086 seconds");
console.log工作正常。当我尝试从成功函数内的数组中访问值时,它工作正常。但是,从updateTimer()访问它不起作用,并在chrome调试器中给我这条消息:
答案 0 :(得分:5)
我猜你正试图在updateTimer()中访问todaySectionName。在这种情况下,您收到错误的原因是todaySectionName不在updateTimer的范围内。
因此,您需要将updateTimer定义为成功函数中的闭包,或者您需要找到另一种方法将这些值传递给updateTimer。 (就像参数一样。)
因此,只要定义了updateTimer,就将其签名更改为:
function updateTimer(todayTimeMinutes, todayTimeHours, todaySectionName) {
// leave this the same
}
然后将您的成功功能更改为:
$.post('fromDB.php', function(data) {
eval(data);
console.log(data);
updateTimer(todayTimeMinutes, todayTimeHours, todaySectionName);
});