Sharp JQuery Chapter 6 Summary


Chapter6 JQuery与AJAX的应用

6.1 AJAX的优势与不足

6.1.1 优势

  • 不需要插件支持
  • 优秀的用户体验
  • 提高web程序的性能
  • 减轻服务器和带宽的负担

6.1.2 不足

  • 浏览器对于XMLHttpRequest对象的支持不足
  • 破坏浏览器的前进,后腿按钮的正常工作
  • 对SEO的支持不足
  • 开发和调试的工具不足

6.2 JQuery中的AJAX

6.2.1 load()方法

load(url [, data] [, callback]);

  • load()方法是内部方法,所以JQuery对象可以操作
  • url参数是string,里面的语法是 url selector, 比如我们要载入html文件,可以加入selector来筛选html文档。
  • 传递方式,如果我们没有传入data Object参数,那么我们用的就是get方法,如果添加了那么我们用的就是post方法。
  • callback(responseText, textStatus, XMLHttpRequest): 在加载完成后会调用,textStatussuccess, error, notmodifed, timeout四种状态。注意,在这里callback无论AJAX请求是否成功,只要完成就会触发这个回调函数。对应的是$.ajax()里面的complete()函数。

6.2.2 $.get()方法和$.post()方法

load()方法一般只是用来获取web中的静态数据文件,我们用的更多的是getpost这两个JQuery全局函数。

6.2.2.1 $.get()

$.get(url [, data] [, callback] [ , type]);

$.get()方法参数1 $.get()方法参数2

  • 其中的回调函数有两个参数,data和textStatus, textStatus和load中的一样,而且只有当数据成功返回success后才会被调用,这点与load()方法不一样。
6.2.2.2 $.post()

Get请求和Post请求的区别: * GET请求会把参数跟在URL后面进行传递,而POST请求则是作为HTTP消息的实体内容发送给服务器。 * GET方式对传输数据有大小限制,通常不能大于2KB,而POST理论上不受限制。 * GET方式请求的数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据。所以GET的安全问题成问题。

在用法上两者差不多的。

6.2.3 $.getScript(), getJson()

  • $.getScript(): 加载js文件,可以用回调函数处理之后的使用。
  • jQuery.getJSON( url [, data ] [, success ] ): success的定义: Function( PlainObject data, String textStatus, jqXHR jqXHR )
    • 注意: 在JQuery1.5之后,success回调函数接受一个jqXHR,而不是XMLHttpRequest object
    • 只有textStatus状态为success,才会调用这个函数
    • 注意接受的函数是Object,方便操作
    • $.each(): A generic iterator function, which can be used to seamlessly iterate over both objects and arrays( includes array like object).
    • jQuery.each( array, callback ), callback: Function( Integer indexInArray, Object value )
    • jQuery.each( object, callback ), callback: Function( String propertyName, Object valueOfProperty )
    • .each(function):Iterate over a jQuery object, executing a function for each matched element. Function( Integer index, Element element )
    • 注意以上两个each方法

6.2.4 $.ajax()

为AJAX的底层函数,只有一个参数,包含了很多设置信息,都是可选的: $.ajax()中options参数1 $.ajax()中options参数2

6.3 序列化元素

6.3.1 serialize()方法

表单数据序列化,用法是: $('#form1').serialize(); serialize方法会用到encodeURIComponent()去给字符编码(中文问题)。当然不光表单,类似这样子也可以: $(':checkbox, :radio').serialize()

6.3.2 serializeArray()方法

将DOM元素序列化,返回JSON格式的数据。

6.3.3 $.param()方法

是serialize的核心,用来对一个数组或者对象按照key/value进行序列化。

    var k = $.param({a:1, b:2});
    alert(k); // a=1&b=2

6.4 JQuery中的全局事件

  • 有些方法是全局方法,不管创建他们的代码位于何处,只要AJAX请求发生时,就会触发他们。
  • 可以通过设置ajax中的option中的globalboolean值来处理是否触发AJAX事件

AJAX流程