jQuery的ajax实现机制--源码解读

jQuery通过src这个属性,对于跨域请求使用scrip标签的src请求路径
jQuery对ajax事件的三种监听方式:
1.全局事件:$(document).on(‘ajaxStart’,func);
需要监听的全局事件:
ajaxStart ajaxStop ajaxError ajaxComplete ajaxSuccess ajaxEnd

jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
    jQuery.fn[ type ] = function( fn ){
      return this.on( type, fn );
    };
});
//如果此时没有正在执行的请求,则触发ajaxStart事件
if ( fireGlobals && jQuery.active++ === 0 ) {
  jQuery.event.trigger("ajaxStart");
}  
//使用event.trigger直接触发事件

2.ajax设置回调项: beforeSend/complete/success/error

$.ajax({url:'php.html',complete:func});

3.deferred绑定方式

$.ajax(...).done(func);

序列化提交表单的函数:
表单序列换即是将需要提交的内容组合成类似:’key=value&key=value…’;
序列化用到的三个函数:

jQuery.fn.serialize(); 
/*
*序列化函数,筛选出表单中需要提交的数据并以序列化字符串方式返回
*/
jQuery.fn.serializeArray();
/*
* 筛选出表单中需要提交的数据并以key/value键值对的对象数组格式返回
* "{'name':'key','value':'select'{'name':'key','value':'select'}";
*/
jQuery.param(serializeArray,traditional);
/*
*将key/value键值对的对象数组序列化'key=value&key=value'
*/

jQuery.fn.serializeArray()三个步骤:
提取表单元素(map),过滤满足提交条件的表单元素(filter is(‘:disabled’) ),组合成key/value键值对的数组对象(map)

jQuery.param:将key/value成作为URI组件编码(保证key和value不会出现特殊符号)使用&连接并将空白符替换成+

如果value是函数,执行他得到真正的value
value = jQuery.isFunction( value ) ? value() : ( value == null ? “” : value );

把key和value作为URI组件编码,保证key和value不会出现特殊符号,即保证了“=”分割的正确性
s[ s.length ] = encodeURIComponent( key ) + “=” + encodeURIComponent( value );
s.join( “&” ).replace( r20, “+” );

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值