浅谈AJAX基本实现流程
1、js中ajax實現流程:
(1)?創建XMLHttpRequest對象,也就是創建一個異步調用對象.
(2)?創建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證信息.
(3) 設置響應HTTP請求狀態變化的函數.
(4) 發送HTTP請求。
(5) 獲取異步調用返回的數據.
(6) 使用JavaScript和DOM實現局部刷新.
2、創建XMLHttpRequest
XMLHttpRequest 用于在后臺與服務器交換數據。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
創建XMLHttpRequest對象:
var xmlhttp;
if (window.XMLHttpRequest)
? ? {//兼容IE7+, Firefox, Chrome, Opera, Safari
?? xmlhttp=new XMLHttpRequest(); }
else
?? ?{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); ?// 兼容 IE6, IE5}
3、向服務器發送請求:
將請求發送到服務器,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法
open(method,url,async);
send(string);
例如:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
method:請求的類型;GET 或 POST
url:文件在服務器上的位置
async:true(異步)或 false(同步)
post和 get:
與 POST 相比,GET 更簡單也更快,并且在大部分情況下都能用。然而,在以下情況中,請使用 POST 請求:
a)?無法使用緩存文件(更新服務器上的文件或數據庫)
b)?向服務器發送大量數據(POST 沒有數據量限制)
c)?發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠
4、設置響應HTTP請求狀態變化的函數
如果需要像 HTML 表單那樣 POST 數據,請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規定您希望發送的數據:setRequestHeader(header,value)
當使用 async=true 時,請規定在響應處于 onreadystatechange 事件中的就緒狀態時執行的函數:
xmlhttp.onreadystatechange=function()
? ?{
? ?if (xmlhttp.readyState==4 && xmlhttp.status==200)
?? ??{
???? document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
?? ??}
? ?}
5、服務器響應
如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。
來自服務器的響應并非XML時用responseText :
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
來自服務器的響應是XML是用responseXML :
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
??{
??txt=txt + x[i].childNodes[0].nodeValue + "<br />";
? ?}
document.getElementById("myDiv").innerHTML=txt;
轉載于:https://www.cnblogs.com/flower-qh/p/7116309.html
總結
以上是生活随笔為你收集整理的浅谈AJAX基本实现流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Handlebars.js 模板引擎
- 下一篇: accp8.0转换教材第11章Ajax交