让回调函数 showResponse 也带上参数

来源:百度文库 编辑:神马文学网 时间:2024/07/08 10:23:57

让回调函数 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这么简单了。