我有javascript代码负责发送ajax请求并更新DOM:
this.AjaxPoller = {
poll: poll,
request: request
};
function request() {
$(".ajax_poller[data-url]").each(fetchDataForElement);
}
function fetchDataForElement(i, elem) {
var url = $(elem).data("url");
$.getJSON(url, handleJson);
}
function handleJson(data) {
if (checkProgress(data)) {
location.reload();
};
$.each(data, function(key, val) {
$(key+ ' .progress_info').html(val);
$(key + ' .progress-bar').width(val);
});
}
function poll() {
setTimeout(this.AjaxPoller.request, 5000);
}
function checkProgress(obj) {
var correct = true;
for (key in obj) {
if (obj[key] != '100%') correct = false;
}
return correct;
}
使用此代码时,此函数返回我在标题中写的错误:
function poll() {
setTimeout(this.AjaxPoller.request, 5000);
}
如何更改此代码才能使其正常工作?
答案 0 :(得分:2)
而不是试试这个。
var AjaxPoller = {
poll: poll,
request: request
};
function poll() {
setTimeout(AjaxPoller.request, 5000);
}
如果是
function poll() {
setTimeout(this.AjaxPoller.request, 5000);
}
this.AjaxPoller在这种情况下未定义为此 keywork引用函数poll()并且不包含AjaxPoller的定义。