2013-03-06 53 views
1

我有一個初學者的問題。如果我使用javascript進行ajax調用,然後在ajax請求獲得響應之前成功重新加載頁面,響應是否仍然有效?ajax調用會成功返回重新加載的網頁嗎?

+1

不,重新加載頁面將終止在該頁面內運行的任何腳本 – 2013-03-06 15:59:27

+1

我從來沒有真正考慮過它,但邏輯表明這是不太可能的。 AJAX調用將涉及客戶端頁面偵聽響應;一旦你加載頁面,監聽器就會消失。服務器可能會發送一個響應,但它會「聾子耳朵」,因爲客戶端不會再聽。 – 2013-03-06 16:00:12

回答

4

這取決於你的意思是'工作'。該請求仍然會被髮送到服務器,並且服務器將發回一個響應,但是在接收到響應時分配給您執行的任何回調函數將不會運行,因爲分配的函數對象將會丟失當頁面重新加載時。

+0

你能更具體嗎? ajax響應被返回,它正在尋找的是一個回調函數,它仍然在那裏具有相同的名稱。你知道具體什麼是不同步的函數對象,以便響應不會處理?也許我的意思是如何分配功能對象? – Dave 2013-03-06 16:29:29

+1

我認爲所發生的事情的具體細節將是瀏覽器特定的,但我會假設在頁面重新加載時關閉在前一頁上打開的任何HTTP連接,所以不會有任何方法強制功能在新頁面中定義,以接收來自在舊頁面上發送的請求的數據。 – codebox 2013-03-06 17:07:08

+0

好的,謝謝你的輸入。 – Dave 2013-03-06 23:56:03

3

號通過重新加載頁面,所有的JavaScript(和它的解析器/發動機)被終止,復位,再次初始化。所以任何掛起的(Ajax)調用都會中止。因此,現有的調用不再有效。此外,所有活動(HTTP)連接都(應該)重置,所以服務器可能仍然處理請求(如果它按時到達),但由於連接中止,響應會丟失。

這些事情在重新加載後不起作用的事實是一件好事:因爲它會導致意想不到的,容易出錯的情況!

+0

感謝您的回答。請看我的後續問題到codebox。 – Dave 2013-03-06 16:31:46

相關問題