我正在尝试使用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进行调试。
答案 0 :(得分:0)
我相信我已经通过将种子添加到GET函数来修复了问题,尽管Cache-Control设置为no-store,no-cache它缓存了结果。
改编的代码如下:
var seed = new Date() / 1;
$.get('beta/email.php', {seed:seed}, function(event) {
这样我确保获得页面的实时版本并且我的代码执行正常。
@Jason P感谢您的帮助!