用ASP實現XMLHttpRequest

來源:互聯網
上載者:User
目前好多語言都可以實現Ajax,像Java, .Net等等。其實Ajax的核心內容就是XMLHttpRequest。如果讀者XMLHttpRequest不太瞭解,可以在Google上找找《Dynamic HTML and XML :The XMLHttpRequest Object》這文章,介紹的比較詳細,我也就不用對XMLHttpRequest進行過多的說明了。對下面講解並示範在ASP中使用XMLHttpRequest來進行無重新整理效果。

首先我們建立一個ASP頁面,只要很簡單的代碼就可以了:

<html>
    <head>
        <script>
            var req=null; 
var dom = new ActiveXObject("Microsoft.XMLDOM");
var url='http://localhost/ajaxtest/action.asp?q=';
        </script>
    </head>
<body onload="loadHTTP()">
        <form action="adtion.asp" name="Form1">
            <INPUT type="text" ID="Text1" NAME="Text1" 
onblur="InitReq(this.value)">
            <DIV id=test></DIV>
        </form>
</body>

 

大家可以看到在Head標籤裡我們聲明了幾個JS變數,這是為後邊寫JS作的準備。

然後我們用JS聲明一個XMLHTTPRequest對象。

//declare a XMLHTTPRequest Object.
    function loadHTTP()
    {
        if (window.ActiveXObject)
        {
        // Microsoft Way
         req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest)
        {
         // Others
         req = new XMLHttpRequest();
        }
    }

 

TextBox的onblur事件將會觸發一個InitReq方法,參數是這個TextBox自己的Value值。

再來看看InitReq方法是什麼樣的://initial it
    function InitReq(_url)
    {
        req.open("GET",(url+_url),true);
        req.onreadystatechange=HttpHandler;
        req.send(null);
    }

 

注意req.onreadystatechange=HttpHandler這一句,它告訴指出了函數HttpHandler是用來處理XMLHttpRequest的onreadystatechange事件的。那麼一旦XMLHttpRequest的onreadystatechange被觸發,那就將執行使用者自訂的函數,當然名字可以隨便,並不一定是要HttpHandler。
下邊是我自己寫的HttpHandler函數:

//handler
    function HttpHandler()
    {
        if(req.readyState==4)
        {
            if(req.status==200)
            {
                var tt=document.getElementById("test");
                tt.innerHTML=req.responseText;
            }
            else{alert('error!');}
        }
    }

 

OK,到目前我們的用戶端功能就算完成了,只有三個函數,簡單吧。呵呵。

這個頁面只有一個TextBox文字框,使用者可以在裡邊輸入一些字元,當這個文字框失去焦點的時候頁面就會有一個request到action.asp這個頁面。為方便起見action.asp只是簡單的返回使用者輸入的內容,表示成功收到:<%if request.QueryString("q") <>"" then
        response.Write(request.QueryString("q"))
    end if
%>

 

到這兒已經全部完工,大家可以試一下,看看在文字框失去焦點以後是否像平常的提交一樣會出現一個進度條,然後頁面重新整理?

相關文章

聯繫我們

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