2013-08-27 43 views
9

我們使用Bootstrap Modal window來顯示一些通過遠程源加載的html。我們通過Bootstrap文檔中的推薦方式執行此操作,方法是使用選項remote並將其傳遞給url。 (如上所述hereBootstrap模態遠程源錯誤處理

例如:

$('#id').modal({remote:'index.html'}); 

我的問題:是否有可能處理錯誤在index.html的不可用的情況?

我在文檔中看不到任何答案。

我知道這應該很少發生,但是如果有人有一個緩慢或多斑點的連接,我寧願向他們顯示一個錯誤,而不是掛在一個空的模態。

+1

我給了一個1 +,但我也要去補充一點看起來單個文件在其他文件不存在的情況下會變得很糟糕的可能性很小 - 換句話說,假設這個資源是從同一個服務器/域加載的,那麼您的應用/頁面在其他方面可能會有問題情況。 –

+1

謝謝!是的我同意。我們在移動設備上特別注意到這個問題 - 由於顯而易見的原因,可能會導致連接丟失,因爲覆蓋並不總是完美。當發生這種情況時,我們的整個應用程序被凍結,因爲它沒有任何條件(據我所知)的錯誤/超時。你只需要覆蓋頁面的黑色背景 - 直到你進行硬重置。 – nostromo

回答

5

您可能希望實現全球的Ajax錯誤處理您的應用程序,這將附加到每次執行Ajax請求,執行將是這個樣子:

$(document).ajaxError(function(event, jqxhr, settings, exception) { 
    //Since this handler is attach to all ajax requests we can differentiate by the settings used to build the request 
    if (settings.url == "index.html") { 
    //Handle error 
    } 
}); 

你可以閱讀更多關於全球的Ajax處理程序here

+0

哦,快點!偉大的一點。 –

3

目前GitHub庫(/js/modal.js)包含在模態插件定義該片段:

… 
if (this.options.remote) this.$element.load(this.options.remote) 
… 

這表明沒有回調時,該請求的結果被直接分配到的DOM元素正在處理。

從文檔jQuery.load

這種方法是從服務器獲取數據的最簡單方法。它是 大致相當於$ .get(url,data,success),只是它是一個 方法而不是全局函數,並且它有一個隱式回調函數 。當檢測到成功響應時(即當textStatus 爲「成功」或「未修改」時),.load()將匹配元素的HTML內容設置爲返回的數據。

在doc後來有介紹如何檢測故障與load代碼snippt:

$("#success").load("/not-here.php", function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $("#error").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

看來Twitter的團隊選擇了處理錯誤。

也許是時候開始的問題,這似乎是一個「移動第一」的圖書館將要處理這種事情擺好;-) https://github.com/twbs/bootstrap/issues