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

2012年4月2日 发表评论 阅读评论

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

本篇文章来源于 新技术天空 原文链接:http://ntsky.com/tech/web/javascript/2007-04-03/fa4b416f2b3de0ad.html


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/343.html

  1. 本文目前尚无任何评论.