1. 程式人生 > >jquery學習-ajax詳解

jquery學習-ajax詳解

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