xmlHttPRequest對象的open方法的第一個參數為request-type,取值可以為get或post.本篇介紹get請求.
get請求的目的,主要是為了獲取數據.雖然get請求可以傳遞數據,但傳遞數據的目的是為了告訴服務器,給我們什么內容.
使用get請求時,參數都是隨url進行傳遞的.
使用get請求時,容易被緩存,需注意緩存問題.
使用get請求時,服務器端請使用Request.QueryString[data]來獲取數據.
我們在《完整的Ajax實例》一文中使用的就是get請求,當時遇到以下問題:
- 如何創建在大部分瀏覽器中都能運行的xmlhttpRequest對象.
- 使用get請求時存在緩存問題
- 中文亂碼問題
其中,第一個問題,在《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.companysz.com/oneWord/archive/2011/06/04/2072585.html
新聞熱點
疑難解答