Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:this.AjaxPoller未定义_Javascript_Jquery - Fatal编程技术网

Javascript TypeError:this.AjaxPoller未定义

Javascript TypeError:this.AjaxPoller未定义,javascript,jquery,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"); $.ge

我有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);
}
如何更改此代码以使其正常工作?

请不要尝试此操作

var AjaxPoller = {
  poll: poll,
  request: request
};

function poll() {
  setTimeout(AjaxPoller.request, 5000);
}
例如

function poll() {
  setTimeout(this.AjaxPoller.request, 5000);
}

在本例中,this.AjaxPoller未定义为键工作引用函数poll(),不包含AjaxPoller的定义。

我必须使用this.request使此代码100%工作,因为没有它,它只发送一个ajax请求,而不是5秒钟。但我认为这有点异味,因为这可能是指不同的背景。