Javascript 匿名函数在回调中给出“未定义的不是函数”
当运行下面的代码时,我得到一个未捕获的TypeError:undefined不是back.ajax行中的函数{。我已经阅读了jQuery文档,这似乎应该可以做到。我还验证了jQuery是否包含在内,浏览器是否识别$.CURRYEAR是否已定义,以及所有引用的元素是否存在。如果我将此代码用作.load的回调,那么它会很好地执行,但我需要同步执行,因为while循环只需要e如果异步调用,则执行一次 代码: }back.ajax{…}应该是$.ajax{…} ajax调用是全局的,它不绑定到任何特定对象,因此不在jQuery对象上调用它,而是在jQuery命名空间对象上调用它Javascript 匿名函数在回调中给出“未定义的不是函数”,javascript,jquery,ajax,Javascript,Jquery,Ajax,当运行下面的代码时,我得到一个未捕获的TypeError:undefined不是back.ajax行中的函数{。我已经阅读了jQuery文档,这似乎应该可以做到。我还验证了jQuery是否包含在内,浏览器是否识别$.CURRYEAR是否已定义,以及所有引用的元素是否存在。如果我将此代码用作.load的回调,那么它会很好地执行,但我需要同步执行,因为while循环只需要e如果异步调用,则执行一次 代码: }back.ajax{…}应该是$.ajax{…} ajax调用是全局的,它不绑定到任何特定对
此外,您确实应该修复ajax以使用async:true,这样在ajax调用期间不会锁定浏览器。这需要将while循环更改为不同类型的结构,以对异步ajax调用进行排序。感谢您的输入。最后进行加载以查找要加载的页数,将然后调用一个在回调中加载并递归调用自身的函数。允许序列化加载页面。
function loadWL() {
var back = $("#back-results");
var numYears;
var year;
var count = 0;
var wArr = [];
var lArr = [];
var dArr = [];
do {
year = CURRYEAR - count;
var standingsURL = STANDINGS.replace(" ", localStorage["leagueID"]);
standingsURL = standingsURL.replace(",", year);
var yqlStand = 'https://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + standingsURL + '"') + " #maincontainertblcell";
//Load into the hidden pane
var id;
var self = this;
back.html("");
back.ajax({
url: yqlStand,
async: false
}).done(function() {
//Parse the number of years the league has been active
if (count == 0) {
numYears = $("select > option").length;
}
//Narrow to only the elements we need
$(self).html($("#back-results tr .tableBody"));
//Now traverse the back pane and store info
$("#back-results > .tableBody a").closest("tr").each(function(index) {
id = urlToID($(this).find("a").attr('href'));
if (typeof wArr[id] == 'undefined') {
wArr[id] = 0;
lArr[id] = 0;
dArr[id] = 0;
}
wArr[id] = wArr[id] + parseInt($(':nth-child(2)', this).text().trim(),10);
lArr[id] = lArr[id] + parseInt($(':nth-child(3)', this).text().trim(), 10);
dArr[id] = dArr[id] + parseInt($(':nth-child(4)', this).text().trim(), 10);
if (count == numYears-1) {
arrayToLocal(wArr, "wins");
arrayToLocal(lArr, "losses");
arrayToLocal(dArr, "draws");
}
});
count++;
return;
});
} while (count < numYears);