TOP

打造顛覆你想象中的高性能,輕量級的webform框架---無刷新提交后臺并返回參數(第五天)
2017-10-13 10:38:22 】 瀏覽:10233
Tags:

        問題5:  使用aspx 頁面執行后臺方法,總是要刷新整個頁面?我想提交后臺不刷新頁面,同時返回參數 執行前臺的js 腳本,就是說類似于像 ajax 的效果一樣,那我們該怎么做呢?

       大家是否已經看了前面的文章,下面我們來總結一下如何去實現?

       首先我們要知道 ,我們的aspx 頁面 默認情況下 執行后臺 是通過 form1 表單提交到后臺的,而我們前面 <from>  標簽中,有一個屬性叫做  target的屬性优乐棋牌app下载,系統默認情況下是“-self”,就是說返回的數據是指向自己的,表示整個頁面會刷新,我們想不 刷新整個頁面,我們只需要 在 界面上 放置一個隱藏的 <iframe>標簽,同時將id=‘from1’ 的表單的屬性target 指向 <iframe> 的name 的值,然后我們就會發現 ,aspx頁面 執行后臺后,頁面沒有刷新了。

      上面是對我前一堂課程的總結!!!下面我們來看一下 C# 后臺如何傳輸參數到前臺,同時讓前臺能夠接收到后臺傳出的參數????

       其實寫過 一般處理程序的人都知道,如何傳遞參數的,使用 Response.Write(“我是好人”);這樣會將 這個值輸入到  iframe 中,但是iframe中我們只需要我們傳入的值,但是我們看到 iframe 中 除了 傳入 我們需要的值之外還有很多我們不要的元素,所以我們要將這些不要的清除掉,怎么清除掉呢?

       

我們可以這樣寫

   

 Response.ClearContent();
            Response.Write("我是好人");
           Response.End();

  大功告成优乐棋牌app下载,這樣前臺 iframe 只顯示我們輸出的值了。

      現在出現了另外一個問題,我們的前臺如何 判斷  ,后臺c# 代碼執行完成后再執行  前臺的js方法?

    我曾經想過用 用 settimeout 去循環判斷 iframe 中內容的值,雖然可以實現,但是容易陷入死循環,而且還有時間差,效果遠不如 ajax 。

    如果不能這么做,我們可以從另外一個方面來入手,我們知道 iframe 是有一個load 的事件,我們這里必須使用 jquery的 事件綁定的方法,使用前要先去除綁定,然后在重新綁定优乐棋牌app下载,不然的話  iframe上就會不停的綁定不同的 load事件,代碼實例如下:       

$("#_NofreshIframe").unbind("load");
$("#_NofreshIframe").bind("load", function () {   alert(1)  });

    我們來測試一下,確實能在后臺代碼執行完成后能執行iframe的  load事件。

   那我們需要獲取iframe 中的值就很容易了,這里我們這樣獲取iframe中的值, 

    var result = $(window.frames["_NofreshIframe"].document).text();

  這個方法能兼容所有的瀏覽器的所有版本,以及iframe 跨域的問題。

 

 

其實說了這么多,講了這么多廢話,其實離我們的最終目的快要達到,就是要  打造一個 類似于 ajax 的方法,能夠傳輸到后臺,并返回參數,我們需要做的就是對前面的這些東西進行 類似于  ajax  post 提交 的 封裝,以及對 后期產生問題的展望!!!!

 

        

 

 

 

  

 

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇Owin Middleware如何在IIS集成管.. 下一篇.NET訪問數據庫的兩種方式(C#語言..