我想用jQuery编写一个递归函数来调用发送电子邮件的php文件。电子邮件服务器一次发送10批次的电子邮件,我希望JS继续发送GET,直到data.Finished == true。jQuery递归获得等待结果
我的代码如下:
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进行调试。
@Joe他的代码是在它应该是ajax回调,我不认为这是问题。 –
您是否验证了ajax调用的结果以确保它符合您的期望?在调用'emailDespatchNotification();'的行上放置一个断点可能会有帮助,并检查事件对象。 –
我已验证ajax结果并通过JSONLint运行它,我已将示例结果添加到我的问题中。 – TheBeest