Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了。
推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html 和 http://www.w3school.com.cn/jquery/
我们常用的一些$.post、$.get只是一些简单的、便捷的使用方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()。因为jQuery.ajax()有它自身的处理机制,对于数据类型、cache、请求方式、返回处理等有详细的处理方式。
$.ajax的一般格式
1 2 3 4 5 6 7
| $.ajax({ type: 'POST', url: url , data: data , success: success , dataType: dataType });
|
$.ajax的参数描述:
- url 必需。规定把请求发送到哪个 URL。
- data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
- success (data, textStatus, jqXHR) 可选。请求成功时执行的回调函数。
- dataType 可选。规定预期的服务器响应的数据类型。 (xml、html、script、json、jsonp、text)
- cache(cacheBoolean) 可选。jQuery 1.2 新功能,设置为 false 将不缓存此页面。
- contents 配对的对象,用来确定jQuery将如何解析响应,给定其内容类型。
回调函数
如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。
- beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
- error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
- dataFilter 在请求成功之后调用。传入返回的数据以及”dataType”参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
- success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
- complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。
$.ajax需要注意的一些地方
- data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断
- $.ajax只提交form以文本方式,如果异步提交包含上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit
$.ajax我的实际应用例子
1、$.ajax带json数据的异步请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var aj = $.ajax( { url:'productManager_reverseUpdate',// 跳转到 action data:{ selRollBack : selRollBack, selOperatorsCode : selOperatorsCode, PROVINCECODE : PROVINCECODE, pass2 : pass2 }, type:'post', cache:false, dataType:'json', success:function(data) { if(data.msg =="true" ){ alert("修改成功!"); window.location.reload(); }else{ view(data.msg); } }, error : function() { alert("异常!"); } });
|
2、$.ajax序列化表格内容为字符串的异步请求
1 2 3 4 5 6 7 8 9 10 11 12
| function noTips(){ var formParam = $("#form1").serialize(); $.ajax({ type:'post', url:'Notice_noTipsNotice', data:formParam, cache:false, dataType:'json', success:function(data){ } }); }
|
3、$.ajax拼接url的异步请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var yz=$.ajax({ type:'post', url:'validatePwd2_checkPwd2?password2='+password2, data:{}, cache:false, dataType:'json', success:function(data){ if( data.msg =="false" ) { textPassword2.html("<font color='red'>业务密码不正确!</font>"); $("#validatePassword2").val("pwd2Error"); checkPassword2 = false; return; } }, error:function(){} });
|
$.ajax拼接data的异步请求
1 2 3 4 5 6 7 8 9 10 11 12
| $.ajax({ url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action', type:'post', data:'merName='+values, async : false, //默认为true 异步 error:function(){ alert('error'); }, success:function(data){ $("#"+divs).html(data); } });
|