ajax源码解析-jQuery ajax相关函数

解释了ajax源码中一些函数的使用

1) jQuery.ajaxSetup({ })

jQuery.ajax()函数中的所有的参数选项都可以通过jQuery.ajaxSetup()函数来全局设置默认值。

2) $.ajax()函数的封装

a) $(“”).load(url [, params] [, callback])
请求远程的HTML文件代码(dataType: “html”),默认使用 GET 方式,如果传递了params参数则使用Post方式。在请求“成功”完成时将responseText属性值插入至DOM中。但不管请求是否成功完成“在最后”都会执行callback回调函数(即:complete:callback)。
b) jQuery.get(url [, data] [, callback] [, type] )
通过HTTP GET请求载入数据,并在请求成功时执行回调函数(即:success: callback)。
c) jQuery.getJSON(url [, data] [, callback] )
通过 HTTP GET 请求载入 JSON 数据。相当于: jQuery.get(url, [data],[callback], “json”)
可以通过使用JSONP 形式的回调函数来加载其他网域的JSON数据。
d) jQuery.getScript(url [, callback] )
通过 HTTP GET 请求载入并执行一个 JavaScript 文件。相当于: jQuery.get(url, null, [callback], “script”)
可以跨域调用 JavaScript 文件。
e) jQuery.post(url [, data] [, callback] [, type] )
通过 HTTP POST 请求载入信息,并在请求成功时执行回调函数(即:success: callback)。

3) 对象序列化

a) jQuery.param(object,traditional)
创建数组或对象的序列化表示,该序列化可在ajax请求时在URL查询字符串中使用。
序列化过程中会使用encodeURIComponent()函数把字符串作为URI组件进行编码。
encodeURIComponent() 方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ‘ ( ) 。其他字符(比如:;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
// 在param中会进行如下处理

function( key, value ) {
// 如果value是函数,则取其函数返回值
value = jQuery.isFunction( value ) ? value() : value;
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
};

对于 jQuery 1.4,$.param() 方法将会通过深度递归的方式序列化对象,以便符合现代化脚本语言的需求,比如 PHP、Ruby on Rails 等。你可以传递traditional = true 或在ajax功能中传递包含traditional的options参数。
传送门:$.param()深度递归详解$.param() 示例
b) $(“”).serializeArray()
可以将一个或多个表单元素(比如 input、 textarea等),或者 form 元素本身的jQuery对象序列化为JSON对象。(非 JSON 字符串。需要使用插件或者第三方库进行字符串化操作)
特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。
传送门:$(“”).serializeArray() 示例
c) $(“”).serialize()
可以将一个或多个表单元素(比如 input、 textarea等),或者 form 元素本身的jQuery对象序列化为经过URL编码转换后的字符串,可直接用在URL查询字符串中。
jQuery内部定义:

serialize: function() {
return jQuery.param( this.serializeArray() );
}

传送门:$(“”).serialize()示例

sunbaixin wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!