2014-10-28 83 views
1

我有一個JavaScript在我的頭調用外部服務器來獲取一些信息,比如:的Javascript:如果改變CSS元素的jQuery GET失敗

$.getJSON("https://domain.tld/json/", function (something) { 
      var results = //stuff that formats the result, not relevant here; 
      window.$info = results; 
    }).fail(function(){ 
     // here's where I need the code to make the warning appear 
     });   

然後在身體我應該彈出一個警告起來的情況下GET請求失敗:

<div id="warning">Warning text</div>

問題:JavaScript是在頭和因爲它沒有被創建,我不能改變「警告」分區。 如果我使用document.getElementById("warning").style.display='block';,我收到一條錯誤消息,說它是空的。

那麼如何使用jquery GET函數的.fail()部分來讓警告div出現(稍後創建)以防萬一GET函數失敗?或者這是不可能的?我嘗試了一些「解決方案」(不記得具體是什麼),甚至延遲了整個頁面的加載。我也想避免這種情況。

謝謝你幫助我。

+0

您是否試過在文檔就緒函數中包裝您的jQuery?這將等待DOM在執行jQuery之前加載。 – Coop 2014-10-28 23:56:52

+0

這樣做。我甚至沒有必要包裝整個jquery函數,只是切換可見性的部分,如: })。fail(function(){ $(document).ready(function() $(「 #warning「)。show(); }); }); – user2690888 2014-10-29 15:43:15

+0

P.S.好的,所以評論只能編輯5分鐘。 :) Coop,我不知道如何將你的評論標記爲「正確」的答案。似乎不可能發表評論。對於那個很抱歉。謝謝大家。 – user2690888 2014-10-29 15:51:31

回答

1

你的JavaScript是試圖執行和尋找DOM加載之前的東西。您可以通過確保您的JavaScript僅在DOM準備就緒時觸發來解決此問題。在jQuery中你是這樣做的:

$(document).ready(function(){ 
    //your code here 
}); 

原生JavaScript版本更復雜,所以我不會在這裏發佈。然而,你也可以等待整個頁面加載之前執行代碼,如下所示:

window.onload = function(){ 
    //your code here 
} 
2

你應該隱藏你的HTML元素initialy

<div id="warning" style="display:none;">Warning text</div> 

你可以調用show()方法來顯示隱藏的元素,當GET請求失敗

$("#warning").show();