ajax调用中的getJSON导致无限循环

时间:2013-05-17 08:40:58

标签: jquery ajax getjson

我目前正在调用外部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(),但问题仍然存在。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

getContacts()呼叫完成时,不应该调用{p> getContacts()

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