主版頁面中使用ajax指令碼取資料

來源:互聯網
上載者:User

  因主版頁面繼承自UserControl,我們無法像正常頁面那樣使用Jquey或Ajax的PageMethods等無重新整理方法取資料。不過可以使用ajax提供的Sys.Net.WebRequest來解決這一問題。

方法如下: 

  1、 頁面中拖入ScriptManager。以便於使用Ajax指令碼。同時放在其它用戶端控制項,用於觸發NetPost方法。這裡不列出用戶端控制項。

<asp:ScriptManager ID="smMaster" runat="server" ScriptMode="Auto" EnablePageMethods="true">
</asp:ScriptManager>

  2、在Master源碼中編寫js

        function NetPost() {
            //建立執行個體
             var wRequest = new  Sys.Net.WebRequest();
            //佈建要求URL
             wRequest.set_url( "../CheckState/CheckNetState.aspx" );
            //定義參數
            var body = "ip=192.168.1.1";
            //設定參數
            wRequest.set_body(body);
            //佈建要求方式
            wRequest.set_httpVerb("POST");
            //請求完成處理函數
            wRequest.add_completed(PostNet);
            //執行請求
            wRequest.invoke();
        }
        function PostNet(exector, eventArgs) {
            //執行器的狀態E :responseAvailable、aborted 或 timedOut。
           //僅當 responseAvailable 返回 true 時,事件處理常式才能訪問執行器的其他響應資訊。
            if (exector.get_responseAvailable()) {
            //判斷狀態是否正常
            if (exector.get_statusCode() == '200') {
                 //得到傳回值
                    var returnInfo = exector.get_responseData();
                    if (returnInfo == "0") {                            
                      //顯示相關內容
                    }
                } 
            } 
        }

   3、add_completed()說明:
   註冊的事件處理常式函數必須接受兩個參數:
      1) 對發出網路請求的執行器的引用。通過訪問執行器,可以檢查其狀態和檢索響應資料。
      2) eventArgs 參數,它由引發完成請求事件的執行器設定。

  4、編寫請求頁面

    請求地址為一個頁面,沒有任何HTML內容,僅在Page_load方法中編寫代碼。本例中的請求頁面放在根目錄的CheckState檔案夾下,名稱為:CheckNetState.aspx 。

 

  5、請求頁面代碼如下,主要實現Ping功能。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Iaddtech.Environmental.Web.UI.CheckState
{
    public partial class CheckNetState : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Clear();
            //得到參數
            string ip = Request.Form["ip"];
            int isConnect = PingServer(ip);
            //輸入傳回值
            Response.Write(isConnect.ToString());
            Response.End();
        }

        private int PingServer(string ip)
        {
            System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
            options.DontFragment = true;
            string data = "t";
            byte[] buffer = System.Text.Encoding.ASCII.GetBytes(data);
            int timeout = 1000; // Timeout 時間,單位:毫秒
            System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
            if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                return 0;
            else
                return 1;
        }
    }
}

  6、用其它頁面套用主版頁面後,測試。

 

 

 Sys.Net.WebRequest請參考:http://msdn.microsoft.com/zh-cn/library/bb310979.aspx 

 


 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.