|
var url="ajaxdemo.ASP";
var paras = "" ;
var myAjax = new Ajax.Request(
url,
{
method: 'post',
parameters: paras,
onComplete: showResponse
});
}
function showResponse(originalRequest){
var html = originalRequest.responseText;
alert(html);
}
這是應(yīng)用 prototype.js 后最常看見(jiàn)的ajax代碼,由于 showResponse 不能直接帶參數(shù),在處理回調(diào)函數(shù)時(shí)有時(shí)候比較麻煩,比如要把返回的html值動(dòng)態(tài)插入到某個(gè)元素里面去。今天終于想到了一種方法來(lái)解決這個(gè)問(wèn)題:
function demo(){
var url="ajaxdemo.ASP";
var paras = "" ;
var myAjax = new Ajax.Request(
url,
{
method: 'post',
parameters: paras,
onComplete: function(originalRequest){showResponse(originalRequest,elemID)}
});
}
function showResponse(originalRequest,elemID){
var html = originalRequest.responseText;
$(elemID).innerHTML = html;
}
匿名函數(shù)這時(shí)充當(dāng)了回調(diào)函數(shù),而showResponse則變成一個(gè)普通方法了。變換了概念,問(wèn)題就順利解決。
解決了這個(gè)問(wèn)題,還可以把這兩個(gè)函數(shù)封裝為一個(gè)函數(shù):
function demo(url,paras,updateElemID){
var myAjax = new Ajax.Request(
url,
{
method: 'post',
parameters: paras,
onComplete: function(originalRequest){showResponse(originalRequest,updateElemID)}
});
}
function showResponse(originalRequest,elemID){
var html = originalRequest.responseText;
$(elemID).innerHTML = html;
}
只需要調(diào)用 demo(url,paras,updateElemID) 就能完成ajax的功能。爽。如果參數(shù)再擴(kuò)展一下,增加一些動(dòng)作函數(shù),就不止是update某個(gè)元素的innerHTML這么簡(jiǎn)單了。
JavaScript技術(shù):讓回調(diào)函數(shù) showResponse 也帶上參數(shù)的代碼,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。