匿名函数给出“;undefined不是函数“;在回调中
Anonymous function gives "undefined is not a function" in callback
运行以下代码时,在"back.ajax({"一行,我得到了一个"UncaughtTypeError:undefined is not a function"。我已经阅读了jQuery文档,这似乎已经完成了任务。我还验证了jQuery是否包括在内,浏览器是否识别"$"。CURRYEAR已经定义,并且所有引用的元素都存在。如果我使用相同的代码作为对.load()的回调然后它执行得很好,但我需要同步执行,因为while循环在异步调用时只执行一次。
代码:
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);
}
back.ajax({...})
应为$.ajax({...})
。
ajax调用是全局的,它不绑定到任何特定的对象,所以你不在jQuery对象上调用它,而是在jQuery命名空间对象上调用。
此外,您确实应该修复ajax以使用async: true
,这样它就不会在ajax调用期间锁定浏览器。这需要将while循环更改为不同类型的结构,以便对异步ajax调用进行排序。
相关文章:
- 如何将一个JavaScript函数回调为多个函数
- Meteor:异步函数回调异常:onAfterAction
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- jQuery动画函数回调错误
- jquery在html属性中添加函数回调,以便在其他事件中调用
- jquery getjson 函数:回调返回错误的字符串
- postMessage - 多个 postMessage 事件/函数/回调
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 单击事件后的 JavaScript 函数回调
- 设置超时函数回调静态变量
- Jquery UI 模式匿名函数回调以打开对话框
- 函数回调、局部变量和 chrome.storage.sync.get
- Jquery Ajax 没有拾取选项参数中指定的函数回调
- 如何在 javascript 中进行函数回调
- 用函数回调封装JavaScript
- jQuery JavaScript嵌套异步函数回调
- Node.js-匿名函数回调
- 函数回调超出范围
- php代码的Javascript函数回调
- 如何使用函数回调在更改时提交表单