TypeError:this.AjaxPoller未定义

时间:2015-06-17 05:28:02

标签: javascript jquery

我有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);
}

如何更改此代码才能使其正常工作?

1 个答案:

答案 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的定义。