5 回答

TA貢獻1853條經(jīng)驗 獲得超6個贊
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "Validate.jsp?id=" + encodeURI(idField.value);
init();
req.open("GET", url, true);
req.onreadystatechange = callback;
//callback就是回調(diào)函數(shù),當(dāng)觸發(fā)req.onreadystatechange時,調(diào)用callback獲取url傳回的東西
req.send(null);
}
function init() {
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function callback() {
if(req.readyState == 4) { //反饋回到客戶端
if(req.status == 200) { //反饋完全正常
//alert(req.responseText);
var msg = req.responseXML.getElementsByTagName("msg")[0];
//alert(msg);
setMsg(msg.childNodes[0].nodeValue);
}
}
}
function setMsg(msg) {// 頁面中的span <span id="usermsg"></span>
//alert(msg);
mdiv = document.getElementById("usermsg");
if(msg == "invalid") {
mdiv.innerHTML = "<font color='red'>username exists</font>";
} else {
mdiv.innerHTML = "<font color='green'>congratulations! you can use this username!</font>";
}
}
Validate.jsp
<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0); //prevents catching at proxy server
System.out.println(request.getParameter("id"));
//check the database 可以先去數(shù)據(jù)庫取
response.getWriter().write("<msg>valid</msg>");//寫這個內(nèi)容,隨便指定
%>

TA貢獻1846條經(jīng)驗 獲得超7個贊
js 中的回調(diào)函數(shù) 和其他語言中的回調(diào)函數(shù)一樣啊。
就是有一個 方法,這個方法的參數(shù)有點小脾氣,其中一個或多個參數(shù)要求的類型是方法,這個方法就 是回調(diào)函數(shù)。
當(dāng)這個方法執(zhí)行完成,或者中間步驟會使用你傳入的這個方法……
function a(x,c){
c(x);
}
a("hello!",function( y ){
alert(y);
})
例子如上,
當(dāng)寫a函數(shù)的時候,還不知道 c 是干什么的 ,只知道要對x做某件事情,當(dāng)然x是什么也不知道
當(dāng)調(diào)用 函數(shù)a 時,知道了 被操作的值 x 為 “hello!”,而操作方法是 alert,如此而已

TA貢獻1891條經(jīng)驗 獲得超3個贊
In computer programming, a callback is a reference to a piece of executable code that is passed as an argument to other code.
計算機編程中,回調(diào)函數(shù)是作為參數(shù)傳遞給函數(shù)的一段可執(zhí)行代碼(函數(shù))的引用。
在JavaScript中,回調(diào)函數(shù)具體的定義為:函數(shù)A作為參數(shù)(函數(shù)引用)傳遞到另一個函數(shù)B中,并且這個函數(shù)B執(zhí)行函數(shù)A。我們就說函數(shù)A叫做回調(diào)函數(shù)。如果沒有名稱(函數(shù)表達式),就叫做匿名回調(diào)函數(shù)。

TA貢獻1815條經(jīng)驗 獲得超13個贊
一般來說Ajax最大的一個回調(diào)函數(shù)就是onreadystatechange,這個應(yīng)該成為事件,每次XMLHttpRequest這個Object在URL請求,狀態(tài)改變的時候就會觸發(fā)這個事件。那么你用onreadystatechange=一個函數(shù),這樣讓你的函數(shù)在XMLHttpRequest state change 的時候可以及時捕捉到。當(dāng)然就不用setTimeout來捕捉啦。所以會方便,在你的回調(diào)函數(shù)里面可以檢測Ajax對象的值,包括返回的請求的HTML,當(dāng)然只有在readyState=4的時候而且status=200的時候才能用。status就是HTML狀態(tài),有200,400,500之類的。
總之,回調(diào)函數(shù)就是一個自定義的函數(shù),在發(fā)生特定的事件的時候調(diào)用來處理這個事件的函數(shù)

TA貢獻1824條經(jīng)驗 獲得超8個贊
回調(diào)函數(shù)的意思就是在你執(zhí)行過一個事件或者動作之后,你想它接著能夠繼續(xù)做的事件。
例如當(dāng)你用ajax請求一個數(shù)據(jù)之后,當(dāng)數(shù)據(jù)請求回來了,你希望可以進行一個動作去告訴你數(shù)據(jù)已經(jīng)請求好了,那么此時就可以使用一個回調(diào)函數(shù)來執(zhí)行你所期望的事件。
- 5 回答
- 0 關(guān)注
- 2064 瀏覽
添加回答
舉報