现在的位置: 首页 > 综合 > 正文

Ajax原理攻略

2012年05月01日 ⁄ 综合 ⁄ 共 2539字 ⁄ 字号 评论关闭

  各种版本的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");
    }
    ///火狐下
    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);//火狐中必须用异步,即最后一个参数要为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,而火狐内必须加上用以发送数据
   
    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)");//如果在火狐只需发送null,而在iE内必须发送data
   
    /*注:
     *在IE内post的数据是在xmlHttp.send(data)发送过去的,data即为要发送的数据,而在火狐内数据是通过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"]));
    }
}

抱歉!评论已关闭.