jQuery学习笔记

AJAX

jQuery 对 AJAX 的封装参数比较多,而且,大部分在普通 Web 应用中用得很少,如果真是需要控制到那么精细的地步,我觉得首先应该反思一下设计。jQuery 的 AJAX 封装中,已经包括了两种异步请求类型, XHR , script , 还差一种 iframe 就齐全了。同时, jQuery 的 AJAX 封装中,包括了对 jsonp 形式的支持。

请求与回调

jQuery 的 AJAX ,核心的请求处理函数只有一个,就是 $.ajax() ,然后就是一个简单的上层函数。

$.ajax() 的基本使用形式是:

jQuery.ajax( settings )
settings 是一个对象,里面包含了所有的配置项。
这里,只介绍常用的 settings 项:

url
请求的地址。

type
请求的方法类型, GET , POST 。 默认是 GET 。

data
要发送出去的数据。

dataType
服务器返回的数据类型,支持: ‘xml’, ‘html’, ‘script’, ‘json’, ‘jsonp’, ‘text’ 。

success
请求成功时调用的处理函数。 success(data, textStatus, jqXHR) 。

context
回调函数执行时的上下文

cache
默认为 true ,是否为请求单独添加一个随机参数以防止浏览器缓存

error
请求错误时的调用函数。 error(jqXHR, textStatus, errorThrown) ,第二个参数是表示请求状态的字符串: “timeout”, “error”, “abort”, “parsererror” 。第三个参数是当 HTTP 错误发生时,具体的错误描述: “Not Found”, “Internal Server Error.” 等。

complete
请求结束(无论成功或失败)时的一个回调函数。 complete(jqXHR, textStatus) ,第二个参数是表示请求状态的字符串: “success”, “notmodified”, “error”, “timeout”, “abort”, “parsererror” 。

jsonp
一个参数名,默认是 callback ,一般用于指明回调函数名。设置成 false 可以让请求没有 callback 参数。

jsonpCallback
callback 参数值。默认是自动生成的一个随机值。
对于整套应用来说,其资源请求通常有一套约定的规则,使用 $.ajaxSetup() 可以配置参数的默认值,参数就是上面介绍的那些(不完整)。

$.ajax(options)
AJAX 请求的默认配置。
前面提到过, $.ajax() 是一个核心函数,在其之上,有一些现成的封装,常用的是:

$.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
GET 请求
$.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
POST 请求

请求的状态

一个 AJAX 请求可以看成是一个触发了一连串事件的总事件。这样,对于全局的所有 AJAX 请求而言,我们可以在任意节点上,绑定到全局任意 AJAX 请求的每一个事件:

$("#loading").ajaxStart(function(){
   $(this).show();
 });

.ajaxStart()
请求将要发出时

.ajaxSend()
请求将要发出时(在 .ajaxStart() 后)

.ajaxSuccess()
请求成功

.ajaxError()
请求错误

.ajaxComplete()
请求完成

.ajaxStop()
请求结束(在 .ajaxComplete() 后)
上面这几个 ajax 的全局事件,一般只在 document 上处理。

工具函数

.serialize()
解析表单参数项,返回字符串。

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});
//a=1&b=2

.serializeArray()
解析表单参数项,返回一个列表对象。

$('form').submit(function() {
  console.log($(this).serializeArray());
  return false;
});

//
[
  {name: 'a', value: '1'},
  {name: 'b', value: '2'}
]
上一篇: 下一篇: