0

我正在尝试使用 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 进行调试。

4

1 回答 1

0

我相信我已经通过在 GET 函数中添加种子来解决问题,尽管 Cache-Control 设置为 no-store, no-cache 它正在缓存结果。

修改后的代码如下:

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

通过这种方式,我可以确保获得页面的实时版本并且我的代码可以正常执行。

@Jason P 感谢所有帮助!

于 2013-07-25T13:03:21.793 回答