科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道XMLHTTP对象封装技术

XMLHTTP对象封装技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   Ajax技术的实现主要依赖于xmlhttprequest,但我们在调用其来进行异步数据的传输时,由于xmlhttp是个短线过程(处理事件完成后就销毁)如果不对该对象进行包装处理的话。

作者:中国IT实验室 来源:中国IT实验室 2007年10月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

  

   在 prototype中给我们提供了两个方案,一个是Ajax.Updater,另一个是Ajax.PeriodicalUpdater,两个共同点都是必须传入3个参数:
  container:
   response数据要传达的位置,该位置通过html标签的id进行定义,比如你要把返回的数据输出到html中的某个<div>中,则只要把container改成该id的值就可以了。如果找不到该container,则会发生脚本错误。
  url:
   request请求要传递的目的地。该目的地应该是个servlet或jspservlet,因为request对象只能被servlet中的do***方法自动获取。
  options:
   结构应该与上面Ajax.Base定义的setOptions()中的option结构相同,如果为空或不写,则采用 Ajax.Base定义的初始值(没有传递任何参数时使用)。
   两者的区别在与Ajax.Updater返回给container的是完整的responseText,只有在responseText完全取得又没发生异常时才会把内容写到container里面,而PeriodicalUpdater在获取responseText时,不管是否已经完整取得,就把内容填进container,直到发生异常或完全取得responseText。大多数情况应该使用第一种方法,因为第一种方法在发生异常时会把异常信息显示在container里面,而第二种就不一定了。
   既然已经把xmlhttp封装好了,我们只需要设置好前面所说的3个参数就可以了,要注意的是,设置options参数,一定要按照base中的options结构进行设置,如果我们使用post方法,还可以在opitons中设置postBody属性,把要传递的queryString 放到body中,一个使用post方法进行传递的脚本例子如下:

 

   /*表单提交用post方法*/
   function doRequest(container,paraments,url){
   var options ={
   method: 'post',
   asynchronous: true,
   postBody: paraments
   };
   new Ajax.Updater(container,url,options);
   }

  最后不得不说的是中文编码问题,prototype对传递的参数都进行了编码转换工作,每个传递值通过encodeURIComponent 进行了处理.编码会被转换成utf-8,在后台获取request时,应该统一使用request.setCharacterEncoding("UTF-8")对request设置编码,而不必管页面的编码格式是什么.如果使用post方法进行传递数据,则会自动执行:
   request.setHeader('Content-type','application/x-www-form-urlencoded').确保传递数据编码格式的正确.

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件