0

我目前正在调用外部 php 文件并在特定的 div 中显示它们。这一切都是使用标准的 jQuery $.ajax 调用完成的。

但是,当其中一个被拉入的页面尝试执行以下 getJSON 调用时会出现问题,从而导致无限循环:

function getContacts() {
  if ($('body.all-contacts').length){
    $.getJSON('assets/data/contacts.json', function(data) {
      var template = $('#contacts-template').html();
      var info = Mustache.to_html(template, data);
      $('.contact-list').html(info);
    });
  }
};

上述函数调用如下:

$(document).ajaxComplete(function(){
....
getContacts();
....
})

我也尝试过使用 ajaxStop() 而不是 ajaxComplete() 但问题仍然存在。

4

2 回答 2

1

无限循环对我来说似乎很正常。由于您在 getJSON 完成时调用函数 getContacts,因此 getContacts 包含 getJSON 调用,因此该调用将再次触发,这将导致另一个 ajaxcomplete 回调,该回调将再次触发 getContacts 函数。等等等等

为了防止这种情况发生,您可以删除 ajaxcomplete 函数中的 getContacts()。

如果您希望保持无限循环但每次 ajax 调用之间有时间间隔,您可以使用 javascript 函数 setTimeout。函数格式:
setTimeout("javascript function",milliseconds);

于 2013-05-17T08:55:46.593 回答
0

getContacts()调用完成时不应getContacts()调用。

如果您需要调用该函数,当另一个函数完成时,请确保(使用if ...)它没有getContacts()完成。

于 2013-05-17T08:46:56.603 回答