YUI Research -- Connection Manager module

YAHOO.util.Connect XMLHttpRequest的封装,关注跨浏览器和请求状态等问题

YAHOO.util.Connect.asyncRequest(method, uri, callback, postData)
发起异步请求
初始化默认的头信息;
触发startEvent。

YAHOO.util.Connect.setForm(formId, isUpload, secureUri)
收集表单中的字段信息构造字符串
如果isUpload==true,创建iframe;
如果遇到select元素,则遍历它的options,找到selected==true的option;在IE,用option.attributes['value'].specified,其他用option.hasAttribute('value')判断是否设置了value属性,如果没设置则用text代替value进行字符串组合;
radio和checkbox都是用checked判断

如果是submit而且是第一个检测到的submit:如果
_hasSubmitListener 存在,则取 _submitElementValue中的值填入字符串 ,否则,把它的name和value加入字符串。就是说如果在加载的时候 _hasSubmitListener===false,表单中第一个被检测到的submit的值会被提交。 _hasSubmitListener主要用户解决一个表单中有多个submit的情况。
YAHOO.util.Connect.abort(o, callback, isTimeout) 中断一个请求事务
在XHR的事务中,清楚readystate和事务timeout定时器;
在上传文件事务中,清楚iframe和timeout定时器;
如果上面的清楚操作成功,则触发abortEvent,并调用
handleTransactionResponse生成返回对象。

YAHOO.util.Connect.isCallInProgress (o) 判断请求事务是否还在进行中
在XHR请求的 事务中 ,如果o.conn还没被构析,而且o.conn.readystate!=0而!=4,则返回true;
在上传文件事务中,如果用于上传的iframe还没被删除,则返回true;
其他情况返回false。

YAHOO.util.Connect.createFrame(secureUri) 创建用于上传的iframe
创建的iframe的id为‘yuiIO’+ _transaction_id;
在IE中不能设置通过createElement创建的对象的属性;
在IE的SSL环境中不设置iframe的src属性会抛出安全异常;
把iframe设置绝对布局,并把它设为坐标[-1000,-1000];
把加到body所有子元素的末尾。

YAHOO.util.Connect.appendPostData(postData) 在upload的时候把postData转化为hidden字段插入_formNode

YAHOO.util.Connect.uploadFile(o, callback, uri, postData) 上传文件表单
把表单原本的action、method和target保存起来,然后把它们分别设置成uri、post和新创建的iframe
屏蔽了IE的**oding和其他的entype,并把它们设置成
multipart/form-data
调用appendPostData设置表单数据,然后提交表单;


YAHOO.util.Connect._hasSubmitListener 是否已经注册的检测submit事件的处理器
模块加载时执行一匿名方法,此方法判断Event模块是否已加载成功,如果加载成功,则在document上注册一个监听click的事件,如果事件的 target.type="submit",则把_submitElementValue设置为target.name+"="+ target.value,并返回true;否则返回false。

YAHOO.util.Connect.createXhrObject(transactionId) 构造一个XHR对象
在非IE浏览器中,使用XMLHttpRequest;
在IE中,使用ActiveXObject。ActiveXObject构造方法参数的值定义在数组_msxml_progid中,可以通过setProgId(id)把新值置于_msxml_progid前端。

YAHOO.util.Connect.getConnectionObject(isFileUpload) 构造一个有效连接对象
如果isFileUpload==false,调用createXhrObject并返回其结果;
否则,构造一个空对象并设置他的tId为_transaction_id和isUpload为true;
_transaction_id++。

YAHOO.util.Connect.initCustomEvents(o, callback) 订阅局部事件
创建的局部事件会保存在o中,在连接的整个周期中,会先触发全局事件,再触发局部事件

YAHOO.util.Connect.handleReadyState(o, callback) 处理连接状态
创建一个定时器监听o.conn.readyState==4的状态;

o.conn.readyState==4, 触发completeEvent,并调用handleTransactionResponse
定时器默认值为50,可通过setPollingInterval设置。(为啥不用onreadystatechange呢?)

YAHOO.util.Connect. handleTransactionResponse (o, callback, isAbort) 处理返回结果并判断事务是否成功
如果callback==null,条用releaseObject并返回;
如果200<=o.conn.status<=300或==1223,则执行事务正确处理,触发successEvent;
否则执行错误处理并触发failureEvent。

YAHOO.util.Connect.createResponseObject (o, callbackArg) 创建返回对象
装配连接头信息和其他相关属性。

YAHOO.util.Connect.createExceptionObject (o, callbackArg, isAbort) 创建异常对象
如果是通讯错误,o.status=0;
如果是命令中断,o.status=1。

YAHOO.util.Connect.initHeader (label, value, isDefault) 保存头信息
如果有相同的label头信息存在,则在它的值前加上新值和逗号。

YAHOO.util.Connect.setProgId (id) 添加ActiveX的签名

YAHOO.util.Connect.setDefaultPostHeader (b) 设置是否使用默认的Post方法头信息
默认的Post方法头信息为 ' application/x-www-form-url**oded; charset=UTF-8 '

YAHOO.util.Connect.setDefaultXhrHeader (b) 设置是否使用默认的异步请求头信息
默认的异步请求头信息为 ' XMLHttpRequest '

YAHOO.util.Connect.setHeader (o) 把保存起来的头信息设置在o.conn中

YAHOO.util.Connect. releaseObject (o) 构析连接对象

YAHOO.util.Connect.resetFormState () 重置与表单有关的状态
重置_isFormSubmit、_isFileUpload、_formNode和_sFormData。

YAHOO.util.Connect.resetDefaultHeaders () 重置默认头信息
包括_has_default_headers=false和_default_headers={}。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值