xmlHttPRequest對象的open方法的第一個參數(shù)為request-type,取值可以為get或post.本篇介紹get請求.
get請求的目的,主要是為了獲取數(shù)據(jù).雖然get請求可以傳遞數(shù)據(jù),但傳遞數(shù)據(jù)的目的是為了告訴服務(wù)器,給我們什么內(nèi)容.
使用get請求時,參數(shù)都是隨url進(jìn)行傳遞的.
使用get請求時,容易被緩存,需注意緩存問題.
使用get請求時,服務(wù)器端請使用Request.QueryString[data]來獲取數(shù)據(jù).
我們在《完整的Ajax實例》一文中使用的就是get請求,當(dāng)時遇到以下問題:
- 如何創(chuàng)建在大部分瀏覽器中都能運(yùn)行的xmlhttpRequest對象.
- 使用get請求時存在緩存問題
- 中文亂碼問題
其中,第一個問題,在《XMLHttpRequest對象》一文中已經(jīng)解決;
對于第二個問題,產(chǎn)生的原因是:
get請求會每次訪問緩存,看其中是否有匹配的url,如果有,則返回緩存中的url,如果沒有,則向服務(wù)器發(fā)出請求.
解決方案:
1.在url上加個動態(tài)的變化參數(shù),以求每次訪問的是不同的url,這樣每次都會向服務(wù)器發(fā)出新的請求.
對于第三個問題,我們首先來看下產(chǎn)生亂碼的原因:
xmlHttp返回的數(shù)據(jù)默認(rèn)是uft-8,如果客戶端頁面是gb2312或其他編碼,就會產(chǎn)生亂碼
解決方案:
1.若客戶端是gb2312,則在輸出時,指定輸出流編碼
2.客戶端和服務(wù)器端都使用utf-8編碼
3.務(wù)必使用encodeURIComponent方法對參數(shù)進(jìn)行編碼
注意看例子:
頁面HTML文件沒有變化,變化的知識js代碼,代碼如下:
<script type="text/javascript"> function btn_click() { //創(chuàng)建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方法,對獲取的參數(shù)進(jìn)行編碼 //添加參數(shù),以求每次訪問不同的url,以避免緩存問題 xmlHttp.open("get", "Get.aspx?username=" + encodeURIComponent(username) + "&age=" + encodeURIComponent(age) + "&random=" + Math.random()); //設(shè)置回調(diào)函數(shù) xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("result").innerHTML = xmlHttp.responseText; } } //發(fā)送請求,因為參數(shù)都在URL里,所以此處發(fā)送null xmlHttp.send(null); }</script>
服務(wù)器端:
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.survivalescaperooms.com/oneWord/archive/2011/06/04/2072585.html
新聞熱點(diǎn)
疑難解答