2010-03-03 125 views
4

我試圖做一個腳本,在數據輸入到數據庫之後自動啓動上傳(我需要數據庫用來上傳文件的autoId)。JavaScript太多遞歸?

當我運行JavaScript腳本運行PHP文件,但它調用其他PHP上傳文件失敗。

too much recursion 
setTimeout(testIfToegevoegd(),500); 

,讓錯誤

send("/projects/backend/nieuwDeeltaak.php",'deeltaakNaam='+f.deeltaaknaam.value+'&beschrijving='+ 
         f.beschrijving.value+'&startDatum='+f.startDatum.value+'&eindDatum='+f.eindDatum.value 
         +'&deeltaakLeider='+f.leiderID.value+'&projectID='+f.projectID.value,id); 

        function testIfToegevoegd(){ 

         if(document.getElementById('resultaat').innerHTML == "<b>De deeltaak werd toegevoegd</b>"){ 
          //stop met testen + upload file 

          document.getElementById('nieuwDeeltaak').target = 'upload_target'; 
          document.forms["nieuwDeeltaak"].submit() 
         }else{ 
          setTimeout(testIfToegevoegd(),500); 
         } 

        } 

        testIfToegevoegd(); 

對不起,我們必須使用他們的荷蘭語地名是一個學校項目的腳本。

當我點擊第二次調用所有這些按鈕時(錯誤後),它工作正常。

+0

使用回調,而不是投票。 AJAX的異步特性(第一個「A」代表「異步」)意味着回調是其核心,由'XMLHttpRequest'的'onreadystatechange'監聽器支持。 send是由第三方庫還是您自己定義的? – outis 2010-03-03 14:14:56

+0

我們必須爲JavaScript編寫我們自己的庫。大量的實驗和探索如何完成AJAX功能的核心感謝提示我會看看回調的任何提示,在哪裏可以找到這方面的好信息? – Ken 2010-03-03 14:32:35

回答

18
setTimeout(testIfToegevoegd(),500); 

應該

setTimeout(testIfToegevoegd,500); 

你必須通過函數本身,而不是它的結果

+0

非常感謝 – Ken 2010-03-03 14:06:55