JQuery在异步提交方面封装的很好,直接用Ajax非常麻烦,JQuery大大简化了我们的操作,不用考虑浏览器的差异了。
一、ajax的一般格式
$.ajax({
type: 'POST',
url: url ,
data: data ,
success: success ,
dataType: dataType
});
二、参数描述
url:必需,要求为String类型的参数,(默认为当前页地址)规定把请求发送到的url
type:要求为String类型的参数,请求方式主要为为post或get(默认为get)。put和delete也可使用,但仅部分浏览器支持
timeout:要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
async:要求为Boolean类型的参数,默认设置为TRUE,所有请求均为异步请求。false为同步
cache:要求为Boolean类型的参数,默认为TRUE(当dataType为script时,默认为false)。设置false将不会从浏览器缓存中加载请求信息。
data:要求为object或String类型的参数,是发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData选项。对象必须为键值对格式,例如{fool:"bar1",foo2:"bar2"}转换为&fool=bar1&fool=bar2。如果是数组,JQuery将自动为不同值对应就同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
dateType:要求为String类型的参数,预期服务器返回的数据类型。如果不指定,默认执行智能判断(xml、json、text、html等)
success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。(1)由服务器返回,并根据dataType参数进行处理后的数据。(2)描述状态的字符串
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //调用本次ajax请求时传递的options参数
error:要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)
function(XMLHttpRequest, textStatus, errorThrown){
//通常情况下textStatus和errorThrown只有其中一个包含信息
this; //调用本次ajax请求时传递的options参数
}
三、注意
1、data主要方式有三种,html拼接的,json对象,form表单经serialize()序列化的;通过dataType指定,不指定智能判断
2、$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传不过去的,需要使用jquery.form.js的$.ajaxSubmit
四、实际应用
//1.$.ajax带json数据的异步请求
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序列化表格内容为字符串的异步请求
function noTips(){
var formParam = $("#form1").serialize();//序列化表格内容为字符串
$.ajax({
type:'post',
url:'Notice_noTipsNotice',
data:formParam,
cache:false,
dataType:'json',
success:function(data){
}
});
}
//3.$.ajax拼接url的异步请求
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(){}
});
//4.$.ajax拼接data的异步请求
$.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);
}
});