我想用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