Talk to the server with Ajax 有关Ajax的介绍就不再唠叨了,用jQuery的Ajax功能可以:1.适应不同的浏览器 2.获得很多有用的工具方法
场景1:在服务器端获得html片段注入当前DOM - 使用
一个我之前不了解的小技巧是url参数中可以添加jQuery的选择器,可以选择性的注入服务器返回的片段的一部分,例:
默认load使用GET请求,如果带上参数,就会使用POST了,这主要是方便处理参数中的编码问题。提到POST,随便带出作用于wrapped set的两个工具方法serialize()和serializeArray(),他们能够将范围内有效的form元素整理出来(需要form control有name属性,可以智能的处理处理radio等元素和disabled等状况),序列化成url参数的形式和数组的形式,非常方便。
场景2:从服务器端获取数据然后进行处理 – $.get(url,parameters,callback,type)可以用来处理各种类型的数据,不过目前最让人喜欢还是$.getJSON(url,parameters,callback)的方式。在服务器端生成JSON格式,各种编程语言应该都有方便的库可以直接用,如果服务器端支持JSONP,在url参数里加入“callback=?”就可以非常简洁的完成一个异步调用和回调的编写(谁用谁知道啊^^)。让然要向服务器端提交数据也可以用$.post(url,parameters,callback,type) 有关type参数在下面介绍.
场景3:自定义更特殊的http请求 – $.ajax(options).实际上$.get和load等函数都是$.ajax的包装,最终jQuery都是调用的$.ajax。options里面参数很多,重点介绍:
- dataType - String类型 - 就是前面说的$.get中对应的type,当传入不同的值时,jQuery会对返回的结果做一些预处理,在请求成功的callback的第一参数中会返回不同的值:
xml
请求的返回内容将会被解析为XML Dom并传递给callback
html
返回内容中的html文本不做处理,但是script标签中的内容会被执行
json/jsonp
返回结果会被认为是json字符串并被evaluated
script
返回的内容被认为是javascript并执行,script本身会作为字符串传递给callback
text
返回的内容被认为是普通文本,直接传递给callback
- beforeSend - Function - 在http请求发送前,会将XHR对象传入,用来做一些自定义头等动作
- global - Boolean - 一个开关,默认为开放状态,也就是在jQuery控制的每一个Ajax请求中的各个事件点上,jQuery都会激发定义在本页面内的全局方法 - ajaxStart(callback)/ajaxSend(callback)/ajaxSuccess(callback)/ajaxError(callback)/ajaxComplete(callback)/ajaxStop(callback) 例:$('#errorConsole').ajaxError(reportError)会在任何一个ajax请求出错时调用reportError函数(这里实际上作为wrapped set的方法不是很直观,但是很方便)
链接: 《jQuery in Action》 in action系列
