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