让回调函数 showResponse 也带上参数的代码

  function demo(){

  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);

  }

  这是应用 prototype.js 后最常看见的ajax代码,由于 showResponse 不能直接带参数,在处理回调函数时有时候比较麻烦,比如要把返回的html值动态插入到某个元素里面去。今天终于想到了一种方法来解决这个问题:

  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;

  }

  匿名函数这时充当了回调函数,而showResponse则变成一个普通方法了。变换了概念,问题就顺利解决。

  解决了这个问题,还可以把这两个函数封装为一个函数:

  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;

  }

  只需要调用 demo(url,paras,updateElemID) 就能完成ajax的功能。爽。如果参数再扩展一下,增加一些动作函数,就不止是update某个元素的innerHTML这么简单了。