通过Ajax发送数据--jQuery方法
.load()方法:
$(document).ready(function(){ $('#letter a').click(function(event){ event.preventDefault(); $("#dictionary").load('a.html'); }); });通过使加载的内容淡入视图而不是突然出现,.load()方法可以接受一个加载完成时触发的回调函数:
$(document).ready(function(){ $('#letter a').click(function(event){ event.preventDefault(); $("#dictionary").hide().load('a.html',function(){ $(this).fadeIn(); }); }); });
.getJSON() ----------加载json文件
$(document).ready(function(){ $('#letter a').click(function(event){ event.preventDefault(); $.getJSON('b.json'); }); });
$.get() -----get方法请求
$(document).ready(function(){ $('#letter form').submit(function(event){ event.preventDefault(); $.get('f.php',{'term':$('input[name="term"]').val()},function(data){ // 其中f.php为请求服务地址, // 第二个参数为随请求传递给服务器的参数, // 第三个参数data为返回的响应参数 $('#dictionary').html(data); // 将返回的参数呈现在页面id为dictionary的地方 }); }); });
$.post() -----post方法请求
$(document).ready(function(){ $('#letter a').submit(function(event){ event.preventDefault(); var requestData = {term:$(this).text()}; $.post('f.php',requestData,function(data){ // 其中f.php为请求服务地址, // 第二个参数为随请求传递给服务器的表单参数, // 第三个参数data为返回的响应参数 $('#dictionary').html(data); }); }); });
$(document).ajaxStart()
$(document).ajaxStop() ------全局函数,在请求开始和结束时触发执行
$(document).ready(function(){ var $loading = $('<div id="loading">Loading....</div>').insertBefore("#dictionary"); $(document).ajaxStart(function(){ $loading.show(); }).ajaxStop(function(){ $loading.hide(); }); });
.serialize() ------序列化表单
该方法作用于一个jQuery对象,将匹配的DOM元素装换成能够随Ajax请求传递的查询字符串。即将表单数据一次性传递:
$(document).ready(function(){ $('#letter form').submit(function(event){ event.preventDefault(); var formValue = $(this).serialize(); $.get('f.php',formValue,function(data){ // 其中f.php为请求服务地址, // 第二个参数为随请求传递给服务器的表单参数, // 第三个参数data为返回的响应参数 $('#dictionary').html(data); }); }); });
Ajax错误处理
考虑到在网络或者数据发生错误的可能性,并适当地记录或者报告这些错误。
我们可以使用全局的.ajaxError()方法,处理链接出错时的情况。
可以给.load()之外的Ajax方法连缀.done()、.always()和.fail()方法,并通过他们添加相应的回调函数即可:
$(document).ready(function(){ $('#letter a').click(function(event){ event.preventDefault(); var requestData = {term: $(this).text()}; $.get('z.php',requestData,function(data){ $('#dictionary').html(data); }).fail(function(jqXHR){ // 请求出错时,对页面的处理 $('#dictionary').html('An error occurred: ' + jqXHR.status) .append(jqXHR.responseText); }); }); });
其中,.status属性中包含着服务器返回的状态码。这些代码由HTTP规范定义,当触发.fail()处理程序时,根据下表解读错误:
响应码 说明
400 请求语法错误
401 未授权
403 禁止访问
404 未发现请求的url
500 服务器内部错误
低级Ajax方法:
在jQuery内部,会把以上方法都对象为$.ajax()全局函数的一种变体。这个函数不针对任何特定的Ajax通信类型,而是接受一个选项对象参数,并根据该参数来决定相应的行为:
$.ajax({
url:'a.html',
success: function(data){
$('#dicitionary').html(data);
}
});
使用低级的$.ajax()函数,可以获得下列特殊的好处:
1. 避免浏览器缓存来自服务器的响应。非常适合服务器动态生成数据的情况。
2. 抑制正常情况下所有Ajax交互都可以触发的全局处理程序(例如通过$.ajaxStart()注册的处理程序)
3. 在远程主机需要认证的情况下,可以提供用户名和密码。