在js中寫(xiě)入:
function createXhr() {
function createXhr() {
var httprequest = false;
if (window.XMLHttpRequest) { // if Mozilla, Safari etc
httprequest = new XMLHttpRequest();
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
} else if (window.ActiveXObject) { // if IE
try {
httprequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
httprequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
return httprequest;
}
var xhr;//聲明全局變量 用來(lái)表示XMLHttpRequest對(duì)象
/**
應(yīng)用AJAX的步驟
1、創(chuàng)建XMLHttpRequest對(duì)象
2、調(diào)用open()方法打開(kāi)一個(gè)新的請(qǐng)求
3、調(diào)用send()方法發(fā)送請(qǐng)求到服務(wù)器端
4、 指定onreadystatechange屬性的值,即readyState 屬性值發(fā)生改變時(shí)調(diào)用哪個(gè)方法,
注意onreadystatechange屬性的值對(duì)應(yīng)的是一個(gè)回調(diào)函數(shù),所以只寫(xiě)個(gè)函數(shù)名就OK了
5、編寫(xiě)用于處理 readyState 屬性值發(fā)生改變的方法
*/
//open()方法中需要的url 通過(guò)這種方式來(lái)解決AJAx的緩存的問(wèn)題
function convertUrl(url) {
var timestamp = (new Date()).valueOf();
if (url.indexOf("?") >= 0) {
url = url + "&t=" + timestamp;
} else {
url = url + "?t=" + timestamp;
}
return url;
}
function on_blur() {
//var mydate = new Date().getTime();
xhr = createXhr(); //1.創(chuàng)建XmlHttpRequest對(duì)象
var userId = document.getElementById("userId").value;
var _userId = encodeURI(encodeURI(userId));
var myUrl = "CheckIdServlet?id=" + _userId;
//xhr.open("get","CheckIdServlet?id="+_userId+"&now="+mydate,true);
xhr.open("get", convertUrl(myUrl), true); //2.調(diào)用open()方法打開(kāi)一個(gè)新的請(qǐng)求
xhr.send(); //3.調(diào)用send()方法發(fā)送請(qǐng)求到服務(wù)器端
xhr.onreadystatechange = myCheck; //4.編寫(xiě)用于處理 readyState 屬性值發(fā)生改變的方
}
function myCheck() {
if (xhr.readyState == 4 && xhr.status == 200) { //當(dāng)readyState的屬性為值 為4時(shí)表示HTTP 響應(yīng)已經(jīng)完全接收
var returnData = xhr.responseText; //當(dāng)前請(qǐng)求的http狀態(tài)碼值200時(shí)表示成功
alert(returnData); //這是雙重保險(xiǎn)
document.getElementById("userIdMessage").innerHTML = returnData;
}
}