0%

Jquery Ajax实例

Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了。
推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.htmlhttp://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" ){
// view("修改成功!");
alert("修改成功!");
window.location.reload();
}else{
view(data.msg);
}
},
error : function() {
// view("异常!");
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" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间
{
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);
}
});