2011-09-17 108 views
0

裝載對話框我已經在目前的情況:顯示與非AJAX頁面

  1. 有一些HTML頁面的鏈接。

  2. 當用戶點擊該鏈接,一個NORMAL(VS阿賈克斯)HTTP請求被髮送到Web服務器(通常是Java Servlet的)

  3. 之後,當然瀏覽器將帶來從內容服務器並開始渲染它。 (實際上它與修改的內容相同的頁面 - 不要問我做,在阿賈克斯,原因是需求)

第3步之前正在做(在加載的頁面),我需要以向用戶顯示一些框架,如loading ....

回答

2

那麼,只需在點擊鏈接時在頁面的某個位置填充「加載...」即可。這裏有一些粗糙的代碼

$('#yourlink').click(function(){ 
    $('#loading').html('Loading....'); 
}); 


<div id="loading"> 
</div> 

當頁面加載時,當前的加載div將被替換爲空的,這將表示加載完成。

另一種方法:

CSS的

#loading 
{ 
    display: none; 
} 

的HTML

<div id="loading"> 
    Loading.... 
</div> 

JS的

$('#yourlink').click(function(){ 
    $('#loading').show(); 
}); 
1

嗯,有幾個非Ajax的方式來做到這一點。我想最簡單的辦法是有一個GIV的動畫形象與您加載條,你保存在一個隱藏的DIV在初始頁:

<div style="display:hidden;"><img src="/img/loading.gif"></div> 

然後一些JavaScript添加到鏈接/按鈕提交頁面,例如當它被點擊時,它將圖像取消隱藏div。

1

有很多方法可以做到這一點。我處理它是這樣的:

// Any anchor with showOverlay class will invoke the overlay function 
$("a.showOverlay").click(function() { 
    overlay(); 
}); 

// Normal form submits are intercepted. Overlay call also be skipped by 
// making the form of class "noOverlay" 
$("form").submit(function() { 
    var skipOverlay = $(this).hasClass("noOverlay"); 
    if(!skipOverlay){ 
     overlay(); 
    }  
    return valid; 
}); 

// This overlay function uses the blockUI plugin, other methods can also be used 
function overlay(){ 
    $.blockUI({ 
     fadeIn: 500, 
     css: { 
      height: '150px', 
      top: '35%' 
     }, 
     message: '<div style="margin-top: 40px;"><table align="center" ><tr ><td style="padding-right: 25px;"><img src="/images/wait.gif" /></td><td style="line-height: 25px;"><h1> Just a moment...</h1></td></tr></table></div>' 
    }); 
} 
+0

簡化答案將有所幫助。 –

+0

這很簡單。我可能會刪除一些胖子,但它可以捕獲錨點擊和表單提交,併爲load/please等構造提供一個包,而不必使用任何額外的CSS或HTML,而其他答案需要HTML結構以及CSS。 –