Ajax中發送請求--方法和屬性介紹

Ajax中get和post是XMLHttpRequest對象的open(method,url,asynch)中的屬性程序員

這個open方法是容許程序員用一個Ajax調用向服務器發送 請求。瀏覽器

method:請求類型,相似「GET」或「POSt」的字符串。若只想從服務器檢索一個文件,而不須要發送任何數據,使用GET(能夠在GET請求裏經過附加在URL上的查詢字符串來發送數據,不過數據大小限制爲2000個字符)。若須要向服務器發送數據,用POSET。緩存


在某些狀況下,有些瀏覽器會把多個XMLHttpRequest請求的結果緩存在同一個URL。若是對每一個請求的響應不一樣,這就會帶來很差的結果。把當前時間戳追加到URL的最後,就能確保URL的唯一性,從而避免瀏覽器緩存結果。
如:var url="GetAndPostExample?timeStamp="+newDate().getTime();服務器

url:路徑字符串,指向你所請求的服務器上的那個文件。能夠是絕對路徑或相對路徑。app

asynch:表示請求是否要異步傳輸,默認值爲true(異步)。指定true,在讀取後面的腳本以前,不須要等待服務器的相應。指定false,當腳本處理過程通過這點時,會停下來,一直等到Ajax請求執行完畢再繼續執行。

異步

send(data):async

open 方法定義了 Ajax 請求的一些細節。send 方法可爲已經待命的請求發送指令
data:將要傳遞給服務器的字符串。
若選用的是 GET 請求,則不會發送任何數據, 給 send 方法傳遞 null 便可:request.send(null);
當向send()方法提供參數時,要確保open()中指定的方法是POST,若是沒有數據做爲請求體的一部分發送,則使用null.
完整的Ajax的GET請求示例函數

//指定響應處理函數
xmlHttpReq.onreadystatechange=function(){
    alert(xmlHttpReq.readyState+"  "+xmlHttpReq.status);
};
//創建對服務器的調用
xmlHttpReq.open("get","../registerServlet.do?username="+usernameValue,true);
//發送指令
xmlHttpReq.send(null);

使用get請求時send方法參數時null,若是傳值的話,服務器也接受不到post


當瀏覽器向服務器請求頁面時,它會伴隨這個請求發送一組首部信息。這些首部信息是一系列描述請求的元數據(metadata)。首部信息用來聲明一個請求是 GET 仍是 POST。
Ajax 請求中,發送首部信息的工做能夠由 setRequestHeader完成
參數header: 首部的名字;  參數value:首部的值。
若是用 POST 請求向服務器發送數據,須要將 「Content-type」 的首部設置爲 「application/x-www-form-urlencoded」.它會告知服務器正在發送數據,而且數據已經符合URL編碼了。
該方法必須在open()以後才能調用
完整的 Ajax 的 POST 請求示例:編碼

//指定響應處理函數
xmlHttpReq.onreadystatuchange=function(){
  alert(xmlHttpReq.readyState+""+xmlHttpReq.status);  
};
//創建對服務器的調用
xmlHttpReq.open("post","../reqisterServlet.do",true);
xmlHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//發送指令
xmlHttpReq.send("username="+usernameValue+"&psw=000000")


接收--方法和屬性介紹

responseText

XMLHttpRequest 的 responseText 屬性包含了從服務器發送的數據。它是一個HTML,XML或普通文本,這取決於服務器發送的內容。當 readyState 屬性值變成 4 時, responseText 屬性纔可用,代表 Ajax 請求已經結束

//指定響應處理函數
xmlHttpReq.onreadystatechange=function(){
  //對象狀態 4表示完成
    if(xmlHttpReq.readyState==4){
        //信息已成功返回200 沒有被修改304
        if(xmlHttpReq.status==200||xmlHttpReq.status==304){
            //開始處理信息
            alert(xmlHttpReq.responseText);
        }
    } 
};


XMLHttpRequest初始化

function   createXmlHttpRequest(){    var xmlHttp;    try{    //Firefox, Opera 8.0+, Safari            xmlHttp=new XMLHttpRequest();     }catch (e){            try{    //Internet Explorer                   xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");             }catch (e){                   try{                           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");                   }catch (e){}            }     }    return xmlHttp;  }

相關文章
相關標籤/搜索