J2SE Java基础 J2EE 设计模式 struts hibernate spring freemarker ibatis xml xslt Javascript mysql Linux 系统架构
Java高级 webwork webservice 网页制作 oracle sql server 数据库基础 软件工程 网站建设 SEO 黑客基础 名人堂 Ruby
首页 > 技术文档 > 网页制作 > Javascript > prototype.js 回调函数 showResponse 也带上参数

prototype.js 回调函数 showResponse 也带上参数

作者: 快乐笛子 来源: 快乐笛子的blog  标签:javascript prototype (English)

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这么简单了。


相关文章
(2007年05月21日)Javascript刷新页面的几种方法
(2007年11月12日)Ext2.0 form使用实例
(2007年05月28日)scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解
(2007年10月29日)学习EXT第一天:EXT简介
(2007年06月29日)JS应用大全

评论列表

  • testtest 发表于: 2007-12-29 11:05:18
发表评论

赞助商