AJAX XMLHttpRequest對(duì)象詳解
AJAX是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),是異步Javascript和XML的集合。其核心是XMLHttpRequest對(duì)象,可以在不向服務(wù)器端提交整個(gè)頁(yè)面的情況下,實(shí)現(xiàn)局部更新網(wǎng)頁(yè),它是AJAX的Web應(yīng)用程序架構(gòu)的一項(xiàng)關(guān)鍵技術(shù)。
基本屬性:

基本方法:

XMLHttpRequest五步法:
第一:創(chuàng)建XMLHttpRequest對(duì)象
第二:注冊(cè)回調(diào)函數(shù)
第三:設(shè)置和服務(wù)器交互的參數(shù)
第四:設(shè)置向服務(wù)器端發(fā)送的數(shù)據(jù),啟動(dòng)和服務(wù)器端的交互
第五:判斷和服務(wù)器端的交互是否完成,還有判斷服務(wù)器端是否返回正確的數(shù)據(jù)
HTML代碼:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript" >
var xmlhttp;
function submit() {
//1、創(chuàng)建XMLHttpRequest對(duì)象
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMineType) {//針對(duì)某些特定版本的mozillar瀏覽器的BUG進(jìn)行修正
//將覆蓋發(fā)送給服務(wù)器的頭部,強(qiáng)制 text/xml 作為 mime-type
xmlhttp.overrideMineType("text/xml");
}
} else if (window.ActiveXObject) {//針對(duì)IE瀏覽器進(jìn)行處理
var activexName = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP", "Miscrosoft XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
xmlhttp=new ActiveXObject(activexName[i]);
break;
} catch (e) { }
}
}
if (xmlhttp == undefined || xmlhttp == null) {
alert("當(dāng)前瀏覽器不支持插件XMLHttpRequest對(duì)象,請(qǐng)更換瀏覽器");
return;
}
//2、注冊(cè)回調(diào)函數(shù)
xmlhttp.onreadystatechange = callback;
//獲取當(dāng)前值
var username = document.getElementById("userName").value;
//設(shè)置字符串參數(shù),并進(jìn)行編碼(用于POST提交方式)
var args = "username=" + encodeURIComponent(username);
//GET 交互
//3、設(shè)置和服務(wù)器端交互的參數(shù)
//xmlhttp.open("GET", "XMLHttpRequest.aspx?username=" + username, true);
//POST交互
//3、設(shè)置和服務(wù)器端交互的參數(shù)
//使用Post方式不用擔(dān)心緩存
xmlhttp.open("POST", "XMLHttpRequest.aspx?username=" + username, true);
//設(shè)置Content-Type類(lèi)型,告知服務(wù)器實(shí)體中有參數(shù)
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//4、設(shè)置向服務(wù)器端發(fā)送的數(shù)據(jù),啟動(dòng)和服務(wù)器端的交互
//用于GET提交
//xmlhttp.send(null);
//用于POST提交
xmlhttp.send(args);
function callback() {
//5、判斷和服務(wù)器端的交互是否完成,還有判斷服務(wù)器端是否正確返回了數(shù)據(jù)
if (xmlhttp.readyState == 4) {//readyState=4表示交互完成
if (xmlhttp.status == 200) {//status=200表示正確返回了數(shù)據(jù)
//純文本數(shù)據(jù)的接收方法
var message = xmlhttp.responseText;
var div = document.getElementById("message");
div.innerHTML = message;
}
}
}
}
</script>
</head>
<body>
<input type="text" id="userName" />
<input type="button" value="用戶(hù)名校驗(yàn)" onclick="submit()" />
<br />
<div id="message"></div>
</body>
</html>
aspx中的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace XMLHttpRequest五步法
{
public partial class XMLHttpRequest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Response.Clear();
//獲取當(dāng)前值,get提交使用Request.QueryString方法
//string username = Request.QueryString["username"];
//POST提交,使用Request.Form
string username = Request.Form["username"];
Response.Write("姓名:'"
+ username + "'<br/>時(shí)間:'" + DateTime.Now.ToString() + "'");
Response.End();
}
}
}
總結(jié):
XMLHttpRequest是AJAX的核心部分,需要好好理解。剛開(kāi)始接觸的時(shí)候,有些不明白是怎么回事,而且視頻中講的也是原生的AJAX,表面上看來(lái)不太好理解,但是通過(guò)具體的demo實(shí)踐,就會(huì)發(fā)現(xiàn)其實(shí)這個(gè)挺容易理解的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- jQuery 利用$.ajax 時(shí)獲取原生XMLHttpRequest 對(duì)象的方法
- 解析ajax核心XMLHTTPRequest對(duì)象的創(chuàng)建與瀏覽器的兼容問(wèn)題
- 如何用ajax來(lái)創(chuàng)建一個(gè)XMLHttpRequest對(duì)象
- jquery ajax學(xué)習(xí)筆記2 使用XMLHttpRequest對(duì)象的responseXML
- AJAX中同時(shí)發(fā)送多個(gè)請(qǐng)求XMLHttpRequest對(duì)象處理方法
- AJAX客戶(hù)端說(shuō)明,XMLHttpRequest對(duì)象
- AJax 學(xué)習(xí)筆記一(XMLHTTPRequest對(duì)象)
- ajax 入門(mén)基礎(chǔ)之 XMLHttpRequest對(duì)象總結(jié)
- AJAX XMLHttpRequest對(duì)象創(chuàng)建使用詳解
相關(guān)文章
ajax三級(jí)聯(lián)動(dòng)下拉菜單效果
這篇文章主要為大家詳細(xì)介紹了ajax三級(jí)聯(lián)動(dòng)下拉菜單的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
AJAX獲取服務(wù)器當(dāng)前時(shí)間及時(shí)間格式輸出處理
本文整理了關(guān)于AJAX獲取服務(wù)器當(dāng)前時(shí)間的知識(shí),不會(huì)的朋友可以參考下哈,希望對(duì)你有所幫助2013-05-05
一個(gè)偽ajax圖片上傳代碼實(shí)現(xiàn)示例
這篇文章主要介紹了自己寫(xiě)的一個(gè)偽ajax圖片上傳實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-03-03
layui的checbox在Ajax局部刷新下的設(shè)置方法
今天小編就為大家分享一篇layui的checbox在Ajax局部刷新下的設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Ajax?請(qǐng)求隊(duì)列解決方案并結(jié)合elementUi做全局加載狀態(tài)
這篇文章主要介紹了Ajax?請(qǐng)求隊(duì)列解決方案并結(jié)合elementUi做全局加載狀態(tài),使用 消息隊(duì)列 制作 請(qǐng)求防抖,防止重復(fù)請(qǐng)求印象服務(wù)器,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
Ajax+php數(shù)據(jù)交互并且局部刷新頁(yè)面的實(shí)現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于利用Ajax與php數(shù)據(jù)交互并且局部刷新頁(yè)面的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-07-07

