2011-10-02 50 views
0

我是web開發新手,任何幫助將不勝感激! 請給我任何想法,如果你有我的情況下面。Highcharts onclick事件中斷我的Web服務請求。爲什麼?

所以這是情況。我有一個Web應用程序。 Web應用程序具有ascx頁面和Web服務。我放了幾張highcharts圖表(客戶端javascript圖表庫)。並參考Web服務的腳本管理器。因此,當文檔準備好了(我使用jquery)我的javascript函數(我稱之爲makeUpdate())與設置的超時時間間隔1秒調用另一個JavaScript函數GetDataWrapper()。

GetDataWrapper函數是用於爲圖表返回數據的Web服務Web方法GetData()的封裝器。你知道GetDataWrapper樣子:

function GetDataWrapper() 
{ 
MyNameSpace.WebService.GetData(function (result, userContext, methodName) { 
// onSuccess may be do some new requests on something else 
}, function (error, userContext, methodName) { 
// onFailed alert error message 
}); 
} 

當然也是我把WebService.GetData方法的任何表達式的try/catch。

現在,如果我開始我的應用程序,我會得到一些延遲,我的圖表將逐一接收數據,因爲我有異步計算數據(這就是爲什麼我需要setTimeout並調用javascript makeUpdate()函數幾次)。

所以,如果我只是等待我所有的圖表將獲得數據,那我需要!

但是!

我的highcharts有方法onClick重定向到'location.href = ....'爲每個餡餅區域像這樣的其他頁面:http://jsfiddle.net/ggZ9Z/1/。所以如果我點擊第一個餅圖與數據,當其他人仍然wating數據我會得到GetDataWrapper()onFailed警報錯誤消息沒有任何異常在WebService.GetData()(我把這種方式突破點)

我的問題是如何發生事件和調用我的函數onFailed在GetDataWrapper()沒有例外的WebService.GetData()?

有什麼建議嗎?

無論如何,謝謝你的時間!

回答

0

我自己也有很多類似的問題。我沒有任何正式的文件證明來指導你,但我會詳細說明我通過不同的測試發現了什麼。

調用onFailed回調的原因是,當您嘗試將瀏覽器的位置設置爲另一個頁面時,當前頁面正在被卸載,在這種情況下,瀏覽器的本機XMLHTTPRequest對象中止正在進行的所有異步請求並設置狀態的響應。在這種情況下,ASP.NET生成的用於處理Web服務請求的JavaScript代理類將調用onFailed處理程序。

我對這個問題的解決方案是通過修改原始的Sys.Net.WebServiceProxy來處理狀態碼'0'並調用'onCanceled'回調而不是'onFailed'來創建一個新的代理基類。該解決方案不方便,因爲每個Web服務的每個代理類都需要手動生成。

也許有更好的解決方案,我不知道,如果有人有這樣的解決方案,我會很高興。

+0

「...XMLHTTPRequest對象中止正在進行的所有異步請求,並將響應的狀態設置爲0「我的想法同樣如此 – user956669