2015-08-19 68 views
0

我在我的項目中遇到了問題。我有2個網頁,網頁xxx爲輸入,網頁爲yyy爲輸出。處理時間爲2分鐘,所以當我點擊網頁xxx上的按鈕後,顯示爲白色,等待處理結束並顯示網頁yyy。在點擊按鈕和頁面加載後顯示加載圖片

  1. 如何取代加載圖像的白色空白,並在網頁yyy完成處理後消失?我做了一些研究和例子是這樣的代碼

    function onReady(callback) { 
    var intervalID = window.setInterval(checkReady, 60000); 
    
    function checkReady() { 
    if (document.getElementsByTagName('body')[0] !== undefined) { 
        window.clearInterval(intervalID); 
        callback.call(this); 
         } 
        } 
    } 
    

的例子是從本網站http://jsfiddle.net/MrPolywhirl/cbLsc81f/

  • 哪裏把代碼和CSS顯示加載屏幕?在網頁xxx或網頁yyy上?
  • 我很困惑如何實施js到我的項目。我需要你的幫助

    謝謝你提前。


    UPDATE。

    這個代碼是如何從xxx

    public void GenerateReport() 
        { 
    
         System.Collections.Specialized.NameValueCollection collections = new System.Collections.Specialized.NameValueCollection(); 
    
         collections.Add("ID", Session["ID"].ToString()); 
    
         string remoteUrl = "WebfrmReport.aspx"; 
         string html = "<html><head>"; 
         html += "</head><body onload='document.forms[0].submit()'>"; 
         html += string.Format("<form name='PostForm' method='POST' action='{0}' style='display:none;'>", remoteUrl); 
         foreach (string key in collections.Keys) 
         { 
          html += string.Format("<input name='{0}' type='text' value='{1}'>", key, collections[key]); 
         } 
         html += "</form></body></html>"; 
         Response.Clear(); 
         Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1"); 
         Response.HeaderEncoding = Encoding.GetEncoding("ISO-8859-1"); 
         Response.Charset = "ISO-8859-1"; 
         Response.Write(html); 
         Response.End(); 
        } 
    
    +0

    這取決於從xxx如何頁面YYY加載以及如何請求發送到服務器。但大多數情況下,它會在第xxx頁上等待,直到它從服務器獲得響應,因此將它放在xxx頁面上 –

    +0

    您能告訴我更多詳細信息嗎?來自xxx的請求使用'Response.Write(stringHTML)'並且在頁面yyy上,處理在Page_Load上。調用存儲過程並將其顯示在ReportViewer上。這個進程調用SP需要很長時間才能完成 – user1008497

    +0

    BTW,等待2min對用戶來說體驗不是很好。 恕我直言,請求和稍後觀看對用戶更好。這只是意見。 – lv0gun9

    回答

    0

    試試這個請求YYY頁:

    <div class="ui-widget-overlay"> 
        <div id="loadingDivId"> 
         <img src="~/Content/Images/loading.gif" /> 
        </div> 
    </div> 
    

    ​​
    $('.ui-widget-overlay').css('height', '100%');
    }
    function EnablePage() {
    $('.ui-widget-overlay').css('height', '0%');
    }
    $(document).ajaxStart(function() {
    DisablePage();
    });
    $(document).ajaxStop(function() {
    EnablePage();
    Redirect to yyy
    });
    function GenerarteReport() {
    var url = urlHelper.CommonHelper("", "Home", "GenerateReport");
    $.ajax({
    url: url,
    dataType: "json",
    ype: "GET",
    contentType: 'application/json; charset=utf-8',
    async: true,
    processData: false,
    cache: false,
    success: function (data) {
    if(data.success)
    alert("success");
    else
    alert("not success")
    }
    });
    }

    public JsonResult GenerateReport()
    {
    System.Collections.Specialized.NameValueCollection collections = new System.Collections.Specialized.NameValueCollection();

    collections.Add("ID", Session["ID"].ToString()); 
    
        string remoteUrl = "WebfrmReport.aspx"; 
        string html = "<html><head>"; 
        html += "</head><body onload='document.forms[0].submit()'>"; 
        html += string.Format("<form name='PostForm' method='POST' action='{0}' style='display:none;'>", remoteUrl); 
        foreach (string key in collections.Keys) 
        { 
         html += string.Format("<input name='{0}' type='text' value='{1}'>", key, collections[key]); 
        } 
        html += "</form></body></html>"; 
        Response.Clear(); 
        Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1"); 
        Response.HeaderEncoding = Encoding.GetEncoding("ISO-8859-1"); 
        Response.Charset = "ISO-8859-1"; 
        Response.Write(html); 
        Response.End(); 
        return Json(new { success = true }, JsonRequestBehavior.AllowGet); 
    }