Ajax原理攻略

來源:互聯網
上載者:User

  各種版本的Ajax層出不禁,但萬變不離其宗,各種版本都是給予最原始的XMLHttpRequest發送http請求實現,其請求類型有兩種,即get和post方式。這兩種方式的使用如下代碼:

一、Ajax請求頁面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ajax原理</title>
<script type="text/javascript">
///擷取XMLHttpRequest對象
function getXMLHttpRequest(){
    var xmlHttp;
    ///IE下
    if(window.ActiveXObject){
        xmlHttp=new ActiveXObject("Microsoft.XMLHttp");
    }
    ///Firefox下
    else if(window.XMLHttpRequest){
        xmlHttp=new XMLHttpRequest();
    }
    return xmlHttp;
}

///開始非同步呼叫(Get方法)
function startRequestGet(){
    var xmlHttp=getXMLHttpRequest();
   
    xmlHttp.open("get","ajax.aspx?name=NameGet&birthday=1900-1-1",true);//Firefox中必須用非同步,即最後一個參數要為true

    xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState==4 && xmlHttp.status==200){ //xmlHttp.status!=200表示非同步不成功
            //alert(xmlHttp.responseText);
            document.getElementById("target").innerHTML=xmlHttp.responseText;
        }
    }
   
    //發送請求
    xmlHttp.send(null);
}

///開始非同步呼叫(Post方法,用send方法發送值如(xmlHttp.send('name=jack&birthday=2008-8-8')))
function startRequestPost(){
    var xmlHttp=getXMLHttpRequest();
   
    var data="name=NamePost&birthday=2008-12-22";
   
    var url="ajax.aspx?"+data;//如果在IE裡無需加data,而Firefox內必須加上用以發送資料
   
    xmlHttp.open("get", url+'(FireFox)' , true);
    xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //使用post方法發送資料時需要這句
    xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState==4 && xmlHttp.status==200){
            //alert(xmlHttp.responseText);
            document.getElementById("target").innerHTML=xmlHttp.responseText;
        }
    }
   
    //發送請求
    xmlHttp.send(data+"(IE)");//如果在Firefox只需發送null,而在iE內必鬚髮送data
   
    /*註:
     *在IE內post的資料是在xmlHttp.send(data)發送過去的,data即為要發送的資料,而在Firefox內資料是通過url發送的。
    */
}

</script>

</head>
<body>
    <input type="button" onclick="startRequestGet()" value="開始非同步通訊測試(Get方式)" /><br />
    <input type="button" onclick="startRequestPost()" value="開始非同步通訊測試(Post方式)" />
    <br /><br />
    <div id="target" style=" width:100px; height:100px; border:solid 1px #ff0000;"></div>
</body>
</html>

二、處理請求頁面"ajax.aspx"的主要代碼

protected void Page_Load(object sender, EventArgs e)
{
    string type = Request.HttpMethod;

    if (type == "GET") //用Get發送請求,查詢字串方式獲得
    {
        Response.Write(string.Format("GET:Name:{0},Birthday:{1}.", Request.QueryString["name"], Request.QueryString["birthday"]));
    }
    else if (type == "POST")  //用Post發送請求,Form方式獲得
    {
        Response.Write(string.Format("POST:Name:{0},Birthday:{1}.", Request.Form["name"], Request.Form["birthday"]));
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.