Ajax的原生代碼實現和jQuery實現

一、Ajax簡介

    Ajax(Asynchhronous Javascript And XML)是指一種創建網頁應用的網頁開發技術。Ajax通過後臺與服務器進行少量的數據交換,可以使網頁實現異步更新,創建快速動態網頁,無需加載整個頁面的情況下,能夠更新部分網頁技術。Ajax不是一種新的編程語言,它是一種獨立於web服務器軟件的瀏覽器技術。

    在沒有Ajax的時候,客戶端提交數據後,會等待服務器返回結果,期間出現假死狀態,直到服務器返回結果纔會載入新的頁面,呈現頁面請求結果。而使用Ajax就不會出現假死狀態,局部刷新數據而不影響整個頁面的呈現和使用,同時客戶端也沒有等待服務器的返回結果的時間開銷,展現出良好的交互性。

Ajax的核心是XMLHttpRequest對象,這是一個Javascript對象。下面是XMLHttpRequest對象的一些方法描述:

方法

描述

Abort()

停止當前請求 

getAllResponseHeaders()

把HTTP請求的所有響應首部作爲鍵/值對返回

getResponseHeader("header")

返回指定首部的串值

open("method","URL",[asyncFlag],["userName"],["password"]) 

建立對服務器的調用。method參數可以是GET、POST或PUT。url參數可以是相對URL或絕對URL。這個方法還包括3個可選的參數,是否異步,用戶名,密碼

send(content)

向服務器發送請求

setRequestHeader("header", "value")

把指定首部設置爲所提供的值。在設置任何首部之前必須先調用open()。設置header並和請求一起發送 ('post'方法一定要 )

 

接下來我們來看看實現Ajax的兩種方式(使用XMLHttpRequest對象做原生代碼實現和基於Jquery實現),還有Ajax實現的GET和POST兩種方法。

二、原生代碼實現Ajax

GET請求:

var request=false;
function createRequest(){
	try{
		request=new XMLHttpRequest(); //創建XMLHttpRequest對象,大部分瀏覽器
	
}catch(trymicrosoft){
	try{
		request=new ActiveXObject("Msxml2.XMLHTTP"); //高版本Microsoft瀏覽器
	}catch(othermicrosoft){
		try{
			request=new ActiveXObject("Microsoft.XMLHTTP"); //低版本Microsoft瀏覽器,如IE5、IE6
		}catch(failed){
			request=false;
		}
	}
}
    if(!request){
	    alert("Error");
	}
}
function getCustomerInfo(){
	//1.創建異步對象
	createRequest();
   //設置參數,與服務器交互信息
	request.open("GET",url,true);
   //發送請求
	request.send(null);
   //註冊事件
	request.onreadystatechange=function(){
	    //狀態碼
	if(request.readyState==0||request.readyState==1||request.readyState==2||request.readyState==3){
           //更新數據
	        document.getElementById("b").innerHTML="aaaaaaaa";
		}
	if(request.readyState==4){
		if(request.status==200){
          //更新數據
			document.getElementById("b").innerHTML=request.responseText;
		}
	}
}
}

POST請求:

var request=false;
function createRequest(){
	try{
		request=new XMLHttpRequest(); //創建XMLHttpRequest對象,大部分瀏覽器
	
}catch(trymicrosoft){
	try{
		request=new ActiveXObject("Msxml2.XMLHTTP"); //高版本Microsoft瀏覽器
	}catch(othermicrosoft){
		try{
			request=new ActiveXObject("Microsoft.XMLHTTP"); //低版本Microsoft瀏覽器,如IE5、IE6
		}catch(failed){
			request=false;
		}
	}
}
    if(!request){
	    alert("Error");
	}
}
function getCustomerInfo(){
	//1.創建異步對象
	createRequest();
   //請求頭,POST請求必須要加
 request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   //設置參數,與服務器交互信息
	request.open("POST",url);
   //發送請求
	request.send("name=iii&age=1");
   //註冊事件
	request.onreadystatechange=function(){
	    //狀態碼,判斷服務器是否響應
	if(request.readyState==4){
		if(request.status==200){
          //更新數據
			
		}
	}
}
}

注:onreadystatechange 是一個事件句柄。它的值 (state_Change) 是一個函數的名稱,當 XMLHttpRequest 對象的狀態發生改變時,會觸發此函數。狀態從 0 (uninitialized) 到 4 (complete) 進行變化。僅在狀態爲 4 時,我們才執行代碼。下面是有關的五個狀態:

狀態

名稱

描述

0

Uninitialized

初始化狀態。XMLHttpRequest 對象已創建或已被 abort() 方法重置。

1

Open

open() 方法已調用,但是 send() 方法未調用。請求還沒有被髮送。

2

Sent

Send() 方法已調用,HTTP 請求已發送到 Web 服務器。未接收到響應。

3

Receiving

所有響應頭部都已經接收到。響應體開始接收但未完成。

4

Loaded

HTTP 響應已經完全接收。

 

基於jQuery

jQuery是一個快速、簡潔的JavaScript框架,它是一個優秀的JavaScript代碼庫。利用它實現Ajax相對與原生代碼實現好使多了。

GET請求:

$.get() 方法通過 HTTP GET 請求從服務器上請求數據。

function ajax_get(){
	$("button").click(function(){
	//url請求地址,function 完成後執行的函數,參數爲返回數據和狀態碼
        $.get(url,function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
  });
});
	}

POST請求:

$.post() 方法通過 HTTP POST 請求從服務器上請求數據。

function ajax_post(){
$("button").click(function(){
	//url請求地址,請求發送數據,完畢後執行函數
  $.post(url,
  {
    name:"1",
  },
  function(data,status){
  });
});
	}

 

 

 

其他

下面談談jQuery簡單又強大的Ajax方法:loas() ,load()方法從服務器加載數據,並把返回的數據放入被選元素中。

 

function test_load(){
	$("button").click(function(){
		//必需url,可選data與請求同一發送查詢字符,function方法完成後的執行函數
		//responseTxt結果內容,statusTxt狀態,xhr包含 XMLHttpRequest 對象
  $("#div1").load(url,data,function(responseTxt,statusTxt,xhr){
    if(statusTxt=="success"){
	}
    if(statusTxt=="error"){
	}

  });
});
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章