Ajax傳值及傳值的類型


Ajax傳值方式兩種:POST,GET

客戶端傳給服務器端的交互的值的形式有三種:字符串、XML、JSON
處理服務器響應:XMLHttpRequest對象提供了兩個可以用來訪問服務器響應的屬性,一個是responseText將響應呈現為一個字符串,另一個responseXML將響應呈現為一個XML對象,其實對返回值的通常寫法:通過responseText獲取返回的字符串,在通過XDOM的解析器加載后,獲取Document對象,在進行其他操作。
var back_val = xmlHttp.responseText;
var xmlDoc = loadXMLString(back_val):
合為一句為:var xmlDoc = xmlHttp.responseXML;  這樣可以直接獲取Document對象,進行其他操作。

GET方式:
function getXHR(){
  if (window.XmlHttpRequest) {
      return new window.XMLHttpRequest();
  } else if (window.ActiveXObject) {
      return new window.ActiveXObject('Microsoft.XMLHTTP');

  } else {
    alert('您的不能創建XmlHttpRequest')
  }
}
var xhr = getXHR();
xhr.onreadystatechange = function(){
   if (xhr.readyState == 4) {
    if(xhr.status == 200) {
     alert(xhr.responseText);
     } else {
     //alert('請求失敗!');
     return false;
    }
}
xhr.open('get', url + '?time=' + time + ‘&username=’ + username, true);
xhr.send(null);
GET方式傳值其實就和平時使用超鏈接傳值方式差不多,用?/&方式通過key=value方式傳到服務器,服務器通過getParameter的方式來獲取值。如果傳值中用中文的話,需要進行轉碼:
xhr.open('get', url + '?time=' + time + '&username=' + encodeURL(username), true);
服務器中接收是可以轉回來
String username = request.getParameter('username');
username = new String(username.getBytes(('ISO-8859-1')), 'uft-8');
GET方式總結:用get方式可傳送簡單數據,但大小一般都限制在1KB下,數據追加到url中發送(http的header傳送)。也就是說,瀏覽器將各個表單字段元素及其數據按照URL參數的格式附加在請求行中的資源路徑后面。另外最重要的一點是,它會被客戶端的瀏覽器緩存起來,那么,別人可以從瀏覽器的歷史記錄中讀取到客戶的數據,比較帳號密碼,因此get方法在某些情況下,是會帶來嚴重的安全性問題。

POST方式:
前面和get一樣的省略
var queryVal = 'time=' + time + '&username = ' + username:
xhr.open('post', url, true);
xhr.setRequstHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(queryVal);
和GET的不同的是,url上面不用加需要傳過去的值,而且需要加上一句xhr.setRequstHeader('Content-Type', 'application/x-www-form-urlencoded'); send方法需要傳拼接好的參數作為值,而不是send(null)。
POST總結:使用post方式時,瀏覽器把各表單字段及其數據作為HTTP消息實體內容發送Web服務器,而不是作為URL地址參數形式傳遞,所以使用post方式傳遞的數據量比使用get方式傳遞的數據量大的多。

 

復制高人總結的!!由於不在博客園!所以復制過來!!


免責聲明!

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



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