jquery學習-ajax詳解
阿新 • • 發佈:2019-01-29
jquery中ajax的應用詳解:
jquery在ajax上的應用包括三個層次。
最底層$.ajax()
第2層load(),$.get(),$.post(),
第3層$.getScript(),$.getJSON()。
getScript()
動態載入js檔案
$.getScript("index5.js",function(){
alert("載入完成");
});
getJSON()
動態載入json檔案
$.getJSON("test.JSON",function(data){ //data為返回的資料
$.each(data.myback,function (commentindex,comment){ //$.each遍歷陣列和物件,commentindex物件成員或陣列索引,comment對應變數或內容
return false; //返回false即可退出each函式
});
});
load()
//$(selector).load(URL,data,callback)函式通常來獲取伺服器的靜態檔案,URL中可以新增選擇器進行篩選。
$("#div1").load("data/demo_test.html #p1",function(){ //將遠端檔案的內容中的id=p1的元素載入到div1中,並呼叫回撥函式。
});
$("#div1").load("test.jsp",{name:"name1",age:"22"},function(responseTxt,textStatus,XMLHttpRequest){ //可以向遠端路徑傳遞引數,返回資料,load的傳送方式就根據有無資料決定,有資料就是post方式,沒有就是get方式
//responseTxt; //請求返回的內容
//textStatus; //請求狀態 success、error、notmodified、timeout
//XMLHttpRequest; //XMLHttpRequest物件
});
get和post傳送資料的方式不同,但是在jquery的ajax中這種區別對使用者不可見。get傳輸的資料大小有限制,get請求的資料會被瀏覽器快取,兩種方式在伺服器端的接收不同。
get()
//$.get(URL,data,callback,type);
$.get("web.jsp",{
name:"name1", //get方法中的資料不僅可以是對映方法,也可以是"name=name1&age=12"的字串方式,
age:"12" //如果有中文,要使用編碼,"name="+encodeURIComponent("欒鵬")+"&age=12"
},function(data,textStatue){ //data表示返回的內容,可以是xml,JSON檔案,HTML片段。textStatus表示請求狀態:sucess,error,notmodified,timeout4種
$("#div1").html(data); //如果是html片段,直接設定程式碼段
username = $(data).find("comment").attr("username"); //如果是xml文件,則使用$轉化為dom物件
username = data.username; //如果是json資料,當成物件使用
});
post()
//$.post(URL,data,callback);
$.post("web.jsp", $("#form1").serialize(), //serialize序列化表單內容,作為jQuery的表單物件的函式。
function(data,textStatue){ //data表示返回的內容,可以是xml,JSON檔案,HTML片段。textStatus表示請求狀態:sucess,error,notmodified,timeout4種
$("#div1").html(data); //如果是html片段,直接設定程式碼段
username = $(data).find("comment").attr("username"); //如果是xml文件,則使用$轉化為dom物件
username = data.username; //如果是json資料,當成物件使用
});
ajax()
//通用的ajax函式
$.ajax(options)
$.ajax({
type:"POST", //方式
url:"test.jsp", //地址
dataType:"JSON", //資料型別 xml(xml文件),html(html程式碼),script(js程式碼),json(json資料),jsonp(jsonp格式資料),text(純文字)
beforeSend:function(XMLHttpRequest){ //傳送前函式, 這裡可以修改XMLHttpRequest,例如新增HTTP頭
},
complete:function(XMLHttpRequest,textStatus){ //請求完成函式 //請求成功或失敗均呼叫此函式
},
sucess:function(data,textStatus){ //請求成功,成功返回, //data有可能是xmlDoc,jsonObj,html,text等等
},
error:function(XMLHttpRequest,textStatus,errorThrown){ //請求失敗函式
},
global:true //是否觸發全域性ajax事件,預設為true。全域性函式開啟,任何jquery類能呼叫後面的ajax全域性函式
});
全域性ajax函式
任何jquery物件都可以呼叫全域性ajax函式
$("#loading").ajaxStart(function(){}); //ajaxStart請求開,ajaxStop請求結束 ajaxComplete請求完成 ajaxError請求錯誤 ajaxSend傳送請求前 ajaxSucess請求成功
序列化
serialize()序列化,將元素轉化為xx=xx&xx=xx&xx=xx字串形式,不僅能用於表單
$(":checkbox,:radio").serialize(); //只會將選中的值序列化
//serializeArray序列化dom元素,返回JSON格式資料
var fields = $(":checkbox,:radio").serializeArray();
$.each(fields,function(i,field){
field.key; //JSON的key
field.value; //JSON的值
});
//$.param()方法,序列化陣列或對映
var obj={a:1,b:2,c:3};
var k= $.param(obj); //轉化為a=1&b=2&c=3