asp:get請求寫法


寫在前面的話

XMLHttpRequest對象的open方法的第一個參數為request-type,取值可以為get或post.本篇介紹get請求.

get請求的目的,主要是為了獲取數據.雖然get請求可以傳遞數據,但傳遞數據的目的是為了告訴服務器,給我們什么內容.

使用get請求時,參數都是隨url進行傳遞的.

使用get請求時,容易被緩存,需注意緩存問題.

使用get請求時,服務器端請使用Request.QueryString[data]來獲取數據.

發現的問題

我們在《完整的Ajax實例》一文中使用的就是get請求,當時遇到以下問題:

  1. 如何創建在大部分瀏覽器中都能運行的XMLHttpRequest對象.
  2. 使用get請求時存在緩存問題
  3. 中文亂碼問題

其中,第一個問題,在《XMLHttpRequest對象》一文中已經解決;

對於第二個問題,產生的原因是:

get請求會每次訪問緩存,看其中是否有匹配的url,如果有,則返回緩存中的url,如果沒有,則向服務器發出請求.

解決方案:

1.在url上加個動態的變化參數,以求每次訪問的是不同的url,這樣每次都會向服務器發出新的請求.

對於第三個問題,我們首先來看下產生亂碼的原因:

xmlHttp返回的數據默認是uft-8,如果客戶端頁面是gb2312或其他編碼,就會產生亂碼

解決方案:

1.若客戶端是gb2312,則在輸出時,指定輸出流編碼

2.客戶端和服務器端都使用utf-8編碼

3.務必使用encodeURIComponent方法對參數進行編碼

注意看例子:

例子

頁面HTML文件沒有變化,變化的知識js代碼,代碼如下:

<script type="text/javascript">
    function btn_click() {
       //創建XMLHttpRequest對象
        var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

       //獲取值
        var username = document.getElementById("txt_username").value;
       var age = document.getElementById("txt_age").value;

       //配置XMLHttpRequest對象
        //使用encodeURIComponent方法,對獲取的參數進行編碼
       //添加參數,以求每次訪問不同的url,以避免緩存問題
        xmlHttp.open("get", "Get.aspx?username=" + encodeURIComponent(username)
            + "&age=" + encodeURIComponent(age) + "&random=" + Math.random());

       //設置回調函數
        xmlHttp.onreadystatechange = function () {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                document.getElementById("result").innerHTML = xmlHttp.responseText;
            }
       }

        //發送請求,因為參數都在URL里,所以此處發送null
        xmlHttp.send(null);
    }
</script>

服務器端:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();

    string username = Request.QueryString["username"];

    string age = Request.QueryString["age"];

    Response.Write("姓名:'" + username + "'<br/>年齡:" + age + "<br/>時間:'" + DateTime.Now.ToString() + "'");

    Response.End();
}




//來源於http://www.cnblogs.com/oneword/archive/2011/06/04/2072585.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM