2011-07-06 56 views
1

我有功能經由API道場addOnUnload和xhrGet

function unlockData() { 

    var xhrArgs = { 
     url: "/api/unlockData", 
     handleAs: "json", 
     content: { 
      account_id: accountId 
      }, 
     load: function(data) { 
      if(data) { 
       alert("Data unlocked"); 
      } else { 
       alert("Something went wrong."); 
      } 

     }, 
     error: function(error) { 
      alert("error:"+error); 
     } 
    } 

    var deferred = dojo.xhrGet(xhrArgs); 

} 

這被稱爲解鎖數據集onunload的

dojo.addOnUnload(window, "unlockData"); 

重裝時,此我得到這個錯誤消息:

Error: Unable to load /api/unlockData?account_id=981782 status:0 

我可以根據xhrGet請求卸載嗎?順便說一句,該功能工作正常,如果不呼籲卸載。

回答

0

由於Xhr呼叫是異步,因此在'卸載'過程中進行此調用將失敗,因爲瀏覽器不在此頁面中。

總之,由於在window.onbeforeunload期間觸發了addOnUnload,所以您可以放置​​一個「計時器」循環來檢查AJAX調用是否成功。

強烈不建議這種做法。在「窗口」關閉期間使用AJAX調用是完全沒有必要的,您應該考慮使用表單並同步調用您的腳本

+1

感謝您的提示。我用一個iframe作爲目標。那樣做了。 – Discos