2013-07-08 23 views
1

我有一些非常複雜的基於PHP/MySQL的AJAX例程在我的應用程序中的某些點運行。我不斷碰到的問題是,當AJAX例程仍在運行時,用戶從基本頁面瀏覽,並且當場拋出XHR請求並出現錯誤。在AJAX腳本運行時暫停瀏覽?

也許這是客戶端和服務器端的問題?我是否需要耗費更多費時的AJAX例程並將它們作爲主腳本的一部分?也許有一種方法可以暫停所有瀏覽,而任何AJAX例程運行時我還沒有找到?我知道我總是可以拋出一個「加載/等待/去得到一個三明治」對話框,但我發現那些非常煩人,我的用戶也會這樣。

任何幫助/建議/哲學表示讚賞。

回答

1

你不能暫停瀏覽,但你可以在整個頁面陰影的頂部咳嗽一個體面的'等待,加載'塊,警告用戶事情正在發生。也就是說,或者通過JavaScript禁用頁面上的每個href,這幾乎不可取。 :)

除此之外,你無法控制客戶。

P.S .:如果通過「對話」,你的意思是一個警報,立即殺死這個想法。

+0

我是一個jQuery的堅果,所以我的AJAX調用的100%是'$ .get','$ .post'或'$ .getJSON'。好的是,我可以使用jQuery-UI對話框小部件來支持應用程序,但每當長時間運行AJAX例程時都會拋出一個**模式**會導致一些令人討厭的反饋。 – DevlshOne

+1

@DevlshOne,是的,這就是我所指的。只要確保你不會在腳下自己射擊。阻塞模態是邪惡的。儘管如此,無縫的無法避免。 –

0

我認爲等待很長時間才能得到響應的請求打敗了「幕後」溝通的ajax概念。

我建議你把你的動作分成一個命令(「請做這個」)和一個狀態(「你完成了嗎?」)。這樣,您可以在服務器完成其任務時更新頁面,並且沒有理由保留請求通道(這對於併發用戶支持也很有用,如果每位訪問者都很快就會用盡支持)將持續很長時間)。