本篇文章我们继续介绍jquery中关于ajax的一些函数,上篇文章,我们讲到了Serialize()和SerializeArray(),
这种序列化后的数据是标准格式,几乎可以被所有的服务器端支持。JSON格式的数据在处理大对象编程时将我们从混
乱的属性字符串中解放出来.
可是我们是不是所有用到ajax的地方都写一遍ajax的请求参数?或者当我们想对已有的所有ajax请求添加一个指
定参数时我们该如何做?这时候我们就需要用到ajaxSetup():设置全局 AJAX 默认options选项。当程序中需要发起多
个AJAX请求时,则不用再为每一个请求配置请求的参数。
既然是全局默认选项,所以,该项中设置的参数会影响所有的$.ajax请求如$.get(),$.post(),$.ajax等。需要
注意的是,如果在请求时重新设置了已参数值,这时请求会用新设置的值,而不是用$.ajaxSetup中默认设置的值,
用$.ajaxSetup函数所设置的默认值不会应用到load()命令上。对于实用工具函数,如$.get()和$.post(),其HTTP方
法不会因为使用这些默认值而被覆盖。如设置GET的默认类型不会导致$.post()使用HTTP的GET方法。这样也就解决
了我们开始提出的两个问题,当我们需要多个ajax请求时,可以写在ajaxSetup()中,而当我们需要添加一个指定参数
时,我们可以在公共js文件中添加$.ajaxSetup()方法,在方法里面追加参数。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery Ajax - Load</title> <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js"></script> <script type="text/javascript"> $(document).ready(function() { $.ajaxSetup({ url: "../data/ajaxSetup.aspx", data: { "param": "wyj.wang" }, global: false, type: "POST", success: function(data, textStatus) { $("#divResult").html(data); } }); $("#btnAjax").click(function(event) { $.ajax(); }); $("#btnGet").click(function(event) { $.get(); }); $("#btnPost").click(function(event) { $.post(); }); $("#btnGet2").click(function(event) { $.get("../data/ajaxSetup1.aspx",{ "param": "sadfdsfdas" }); }); }); </script> </head> <body> <button id="btnAjax">不传递参数调用ajax()方法</button><br /> <button id="btnGet">不传递参数调用get()方法</button><br /> <button id="btnPost">不传递参数调用post()方法</button><br /> <button id="btnGet2">传递参数调用get()方法, 使用全局的默认回调函数</button><br /> <br /> <div id="divResult"></div> </body> </html>
我们在上面的demo中看到有这样一个属性:global。它是Boolean类型的,默认为true,用来设置是否触发全局的
Ajax事件。
全局Ajax事件是一系列伴随Ajax请求发生的事件.主要有如下事件:
名称 |
说明 |
ajaxComplete( callback ) |
AJAX 请求完成时执行函数 |
ajaxError( callback ) |
AJAX 请求发生错误时执行函数 |
ajaxSend( callback ) |
AJAX 请求发送前执行函数 |
ajaxStart( callback ) |
AJAX 请求开始时执行函数 |
ajaxStop( callback ) |
AJAX 请求结束时执行函数 |
ajaxSuccess( callback ) |
AJAX 请求成功时执行函数 |
我们可以通过将默认options的global属性设置为false来取消Aja全局事件的触发。
全局Ajax事件可以说是比较特殊的事件,这些事件的存在,在某些情况下,让我们可以针对Ajax不同的状态做一
些事情。而ajaxSetup()的存在,也让Ajax在Query中更加灵活。