Ajax的优势和不足
- 优势:
- 不需要插件支持
- 在不刷新整个页面的前提下更新数据
- 通过XMLHttpRequest对象向服务器端提交希望提交的数据,按需发送
- 减轻服务器和带宽的压力
- 不足:
1.开发难度大
2.破坏浏览器的前进,后退
3.对搜素引擎的支持不足
4.开发和调试工具缺乏
核心是XMLHttpRequest对象,通过它发送异步请求,接收响应及执行回调
load()方法
通常用来从web服务器上获取静态的数据文件
载入HTML文档
使用jQuery选择器为HTML片段指定目标位置,然后将要加载的文件的URL作为参数传递给load()方法1
2
3
4
5$(function() {
$("#send").click(function() {
$("#resText").load("test.html")
})
})筛选载入的HTML文档
第一个参数,即URL:“url selector”URL和选择器中间有一个空格$("#resText").load("test.html .para")
传递方式
根据第二个参数决定。没有采取GET方式传递;有的话采取POST方式。回调参数
第三个参数。在load()方法中,无论Ajax请求是否成功,只要当请求完成(complete)后,回调函数(callback)就会被触发。
$.get()和$.post()方法
用来传递一些参数给服务器中的页面
参数名称 | 类型 | 说明 |
---|---|---|
url | String | 请求的HTML页的URL地址 |
data(可选) | object | 发送至服务器的key/value数据作为querystring附加到请求URL中 |
callback(可选) | function | response的返回状态为success才调用该回调函数 |
type(可选) | string | 服务器端返回内容的格式,包括xml,html,script,json,text和_default |
区别:
get请求会将参数跟在url后进行传递,而post请求则是作为HTTP消息的实体内容发给web服务器
get方式对传输的数据大小有限制(不能大于2kb)
get方式请求的数据会被浏览器缓存起来,其他人可以读到,不安全
传递的数据在服务器端的获取也不相同。PHP中用$_GET[]获取,而post用$_POST[]获取。二者都可以通过$_REQUEST[]获取。
- $.getScript()方法用来加载.js文件
- $.getJSON()方法用来加载JSON文件
$.ajax()方法
是jQuery最底层的Ajax实现。只有一个参数。
这个方法可以替代前面的所有方法。
替代$.getScript()方法
1
2
3
4
5
6
7
8
9$(function () {
$('#send').click(function () {
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
});
})代替$.getJSON()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17$(function(){
$('#send').click(function() {
$.ajax({
type: "GET",
url: "test.json",
dataType: "json",
success : function(data){
$('#resText').empty();
var html = '';
$.each( data , function(commentIndex, comment) {
html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
})
$('#resText').html(html);
}
});
});
})
serialize()方法
序列化元素,与其他jQuery中的其他方法一样,它也是作用于一个jQuery对象,能够将DOM元素内容序列化为字符串。
serializeArray()方法
不是返回字符串,将DOM序列化之后,返回JSON格式的数据
$.param()方法
是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化
1 | $(function(){ |
Ajax全局事件
方法名称 | 说明 |
---|---|
ajaxComplete(callback) | Ajax请求完成时执行的函数 |
ajaxError(callback) | Ajax请求发生错误的时候执行,捕捉到的错误作为最后一个参数传递 |
ajaxSend(callback) | Ajax请求发送前执行的函数 |
ajaxSuccess(callback) | Ajax请求成功时执行的函数 |
要想使某个Ajax请求不受全局的影响,在使用$.ajax(options)方法时,将参数中的global设置为false
1 | $.ajax({ |