日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft A...

 WindySky 2009-01-12

     AJAX的好處就是不會堵塞頁面,可以提高用戶體驗(yàn),可以減少數(shù)據(jù)傳輸尺寸,提高應(yīng)用程序的性能.目前,AJAX技術(shù)可以說是已經(jīng)成為WEB開發(fā)的標(biāo)準(zhǔn)技術(shù).

     AJAX技術(shù)是純客戶端技術(shù),任何客戶端框架(如:Microsoft AJAX Library,Prototype,JQuery等)可以與任何服務(wù)器技術(shù)配合.在ASP.NET MVC P5中也對AJAX技術(shù)進(jìn)行了整合.本文將以ASP.NET MVC中的AJAX應(yīng)用為主題介紹下AJAX技術(shù)與ASP.NET MVC的整合應(yīng)用.

     在此我希望在閱讀本文的你應(yīng)該對AJAX技術(shù)的數(shù)據(jù)傳輸模式比較清楚,詳細(xì)可以查看我之前寫的兩篇關(guān)于AJAX的數(shù)據(jù)傳輸模式的文章:探索AJAX中的消息傳輸模式(一)    探索AJAX中的消息傳輸模式(二)  

一、實(shí)現(xiàn)原理分析

     在ASP.NET MVC中,每一個(gè)請求(Request)都將會被Route到控制器(Controller)下的一個(gè)具體的行為(Action)來處理.那么,如果說我們需要在ASP.NET MVC中使用AJAX,只需要在Action方法中完成業(yè)務(wù)邏輯,并把需要回傳的數(shù)據(jù)寫回到Response中,在客戶端就可以通過JavaScript來處理這些回傳數(shù)據(jù).

     對的,以上思路是完全可行的,ASP.NET MVC的每個(gè)Action就相當(dāng)于Java Web MVC框架的Struts里的Servliet一樣,是完全可以通過Request請求和Response來響應(yīng)請求的.

     我們可以先做個(gè)測試,建立一個(gè)ASP.NET MVC應(yīng)用程序,Views里新建立Ajax目錄,以及新建一Controller(AjaxController),并提供一個(gè)Action方法AjaxServer,該方法需要接受一個(gè)參數(shù),然后將參數(shù)傳轉(zhuǎn)換為大寫后放入Response流.

          
     OK,現(xiàn)在啟動項(xiàng)目并通過訪問:http://localhost:2832/Ajax/AjaxServer?str=abcdefg查看運(yùn)行結(jié)果,頁面上輸出了ABCDEFG,這正是我們想要的效果,證明上面的思路是正確的.那好,下面我就用一個(gè)簡單的Ajax請求來實(shí)現(xiàn)在ASP.NET MVC中最簡單的AJAX應(yīng)用.

二、在ASP.NET MVC中最簡單的AJAX應(yīng)用

     這個(gè)應(yīng)用示例將使用最原始的XMLHttpRequest對象來完成。如下示例代碼:

 1<script type="text/javascript">
 2    var xmlHttp;
 3    function createXMLHttpRequest()
 4    {
 5        if(window.ActiveXObject)
 6        {
 7            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 8        }

 9        else if(window.XMLHttpRequest)
10        {
11            xmlHttp = new XMLHttpRequest();
12        }

13    }

14    
15    //處理方法
16    function AjaxRequest()
17    {
18        createXMLHttpRequest();
19        var url= "Ajax/AjaxServer?str="+document.getElementById("txt").value;
20        xmlHttp.open("GET",url,true);
21        xmlHttp.onreadystatechange=onSuccessCallBack;
22        xmlHttp.send(null);
23    }

24    
25    //回調(diào)方法
26    function onSuccessCallBack()
27    {
28        if(xmlHttp.readyState==4)   //4代表
29        {
30            if(xmlHttp.status==200)
31            {
32                document.getElementById("result").innerHTML=xmlHttp.responseText;
33            }

34        }

35    }

36</script>

     

     這個(gè)示例很簡單,就是通過之前做測試的Action方法,使用XMLHttpRequest直接發(fā)起請求,將頁面文本框里輸入的字符傳遞到ASP.NET MVC的Action,然后將回傳的結(jié)果顯示在頁面上的一個(gè)div里。 Html的代碼如下:

1 <input type="text" id="txt" /><br />
2 <input type="button" value="Ajax Request" onclick="AjaxRequest();" />
3 <hr />
4 <div id="result"></div>

     
     OK,我們使用XMLHttpRequest的AJAX應(yīng)用可以實(shí)現(xiàn),那么如果需要將上面的應(yīng)用示例轉(zhuǎn)化為如Microsoft AJAX Library,Prototype,JQuery等類似的框架上同樣也是如魚得水,復(fù)雜的數(shù)據(jù)同樣可以將起序列化為JSON或是XML后進(jìn)行傳輸.

三、在ASP.NET MVC中使用Microsoft AJAX Library

     上面介紹了使用XMLHttpRequest對象來完成AJAX應(yīng)用,下面我們來看看怎么在ASP.NET MVC中使用Microsoft AJAX Library.首先建立一新的ASP.NET MVC頁面MsAjaxLibrary.aspx,并在控制器里加入相應(yīng)的Action方法:

1public ActionResult MsAjaxLibrary()
2{
3    return View();
4}

     OK,現(xiàn)在我們需要將Microsoft AJAX Library引入頁面:

1<head runat="server">
2    <title></title>
3    <script type="text/javascript" src="http://www.cnblogs.com/Content/MicrosoftAjax.js"></script>
4</head>

     有了上面的準(zhǔn)備,下面就可以編寫客戶端JavaScript來進(jìn)行AJAX請求了,這里我們將使用Microsoft AJAX Library的Sys.Net.WebRequest類來完成AJAX調(diào)用.AJAX服務(wù)端將繼續(xù)使用本文之前的Action方法(AjaxServer)做為服務(wù)器來進(jìn)行請求調(diào)用。完整的JS代碼如下:

 1<script type="text/javascript">
 2function AjaxRequest()
 3{
 4    //請求地址
 5    var url= "AjaxServer?str="+$get("txt").value;
 6    
 7    var wRequest =  new Sys.Net.WebRequest();
 8    wRequest.set_url(url);
 9    wRequest.set_httpVerb("POST");
10    wRequest.add_completed(OnSuccessCallBack);
11    $get("result").innerText="";
12    wRequest.invoke();
13}

14
15function OnSuccessCallBack(executor, e) 
16{        
17    // responseAvailable - 請求是否成功完成
18    if(executor.get_responseAvailable()) 
19    {
20        if (document.all)
21            $get("result").innerText+=executor.get_responseData();
22    }

23    else
24    {
25        if (executor.get_timedOut())
26        {
27            alert("超時(shí)");
28        }

29        else if (executor.get_aborted())
30        {
31            alert("請求被終止");
32        }

33    }

34}

35</script>

 

     OK,現(xiàn)在我們在客戶端通過一個(gè)按扭來執(zhí)行請求,并將響應(yīng)的結(jié)果放置在一個(gè)叫result的div容器里。

1請輸入英文字母:<input id="txt" type="text" />
2<input id="btnRequest" type="button" value="Request" onclick="AjaxRequest();" />
3<hr />
4<div id="result"></div>

     程序運(yùn)行結(jié)果如下:
                         

     關(guān)于ASP.NET MVC與JQuery、ExtJS等其他的框架的集成使用這里就不在介紹了,有興趣的朋友可以查看相關(guān)資料了解。本文作為ASP.NET MVC和AJAX技術(shù)整合使用的基礎(chǔ)性文章,希望能對學(xué)習(xí)在ASP.NET MVC中使用AJAX的朋友起到入門的幫助,

本文示例代碼下載:點(diǎn)擊這里下載

相關(guān)文章:

在ASP.NET MVC中使用ASP.NET AJAX異步訪問WebService

注:原創(chuàng)文章歡迎轉(zhuǎn)載,未經(jīng)允許請注明出處 出處:http://beniao.cnblogs.com 或http://www.cnblogs.com/ 作者:Beniao

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多