jQuery Recursive等待结果

时间:2013-07-23 23:42:29

标签: javascript jquery recursion get

我正在尝试使用jQuery编写一个递归函数来调用发送电子邮件的php文件。电子邮件服务器一次发送10批电子邮件,我希望JS继续发布GET,直到data.Finished == true。

我的代码如下:

function emailDespatchNotification() {
  $.get('email.php', function(event) {
    if (event.action.status == 'OK') {
      if (event.data.Finished != true) {
        emailDespatchNotification();
      }
    }
  });
}

JSON结果如下:

{
"log": {"SQL":{"0":"SELECT ...","1":"INSERT INTO ..."},"0":"Cache cleared","Page":"email.php","Script_Time":3.4495},
"data": {"Finished":false},
"action": {"status":"OK"},
"readable": {}
}

第一次调用emailDespatchNotification()时,代码的行为与我希望它向服务器发送一个GET一样,但是当返回结果(包含data.Finished = false)时,JS会不断发送GET请求到服务器,直到我停止它或浏览器报告错误。

我不明白为什么emailDespatchNotification()被连续调用,因为它只应在GET返回一个值后调用。我已经尝试将整个GET嵌套到一个命名函数中并调用它而不是emailDespatchNotification(),但它没有效果。我在使用列表之前遇到过这种问题,但我不知道有多少次我需要调用服务器,所以列表不合适。我正在使用jQuery 1.8.3并使用Firebug进行调试。

1 个答案:

答案 0 :(得分:0)

我相信我已经通过将种子添加到GET函数来修复了问题,尽管Cache-Control设置为no-store,no-cache它缓存了结果。

改编的代码如下:

var seed = new Date() / 1;
$.get('beta/email.php', {seed:seed}, function(event) {

这样我确保获得页面的实时版本并且我的代码执行正常。

@Jason P感谢您的帮助!