亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用jQuery處理AJAX請求的基礎學習教程

2019-11-20 10:06:44
字體:
來源:轉載
供稿:網友

$.ajax快捷方法

$.get(url,[data],[callback],[type])$.post(url,[data],[callback],[type])

兩種方法請求方式不同,其他方式相同.
參數:url[請求地址],data[請求的數據內容(obj對象)],callback[回調函數(只能處理請求成功事件)],
type[請求返回數據的編碼格式(默認ContentType指定格式)]

$.get('/test?x=1');$.get('/test',{z:2});$.post('/test',{y:2});$.get('/user',function(data,callbacktype,jqXHR){  data//返回數據  callbacktype//返回數據的狀態信息(字符串)  jqXHR//jQuery封裝的XHR對象});$(selector).load(url,[data],[callback])

將頁面片段載入到selector的容器里面

$("#content").load('/user');$.getJSON(url,[data],[callback])

如果是JSON數據回調會成功,否則失敗

$.getJSON('/test',{type:1},function(){  console.log(argument)});$.getScript(url,[claaback])

動態加載腳本文件

$.gerScript('/js/test.js',function(){  alert(test(1,2));});

$.ajax詳細使用方法

$.ajax(url,[settings]);$.ajax({  url:'/test',  success:function(){    alert('ok');  }});

處理響應結果的回調函數:
success[成功],error[請求失敗],
statusCode[指明返回的狀態碼的回調函數],
complete[請求返回前的回調函數(處理返回不同狀態碼的請求)]

$.ajax('/test',{  success:function(data){    console.log(arguments);  },  error:function(jqXHR,textStatus,err){    //jqXHR:jQuery增強的XHR    //textStatus:請求完成狀態    //err:底層通過throw拋出的異常對象,類型與值與錯誤類型有關    console.log(arguments);  },  complete:function(jqXHR,textStatus){    //jqXHR:jQuery增強的XHR    //textStatus:請求完成狀態success | error    console.log(arguments);  },  statusCode:function(){    '403':function(jqXHR,textStatus,err){      //jqXHR:jQuery增強的XHR      //textStatus:請求完成狀態      //err:底層通過throw拋出的異常對象,類型與值與錯誤類型有關      console.log(arguments);      console.log(400);    },    '400':function(){      console.log(400);    }  }   });

請求的數據:data,processData,contentType,traditional

$.ajax('/test',{  //請求的數據內容  data:{    a:1,    b:2  },  //請求的方式  type:'POST',  //是否對請求的數據進行轉碼(用于傳輸數據為html節點內容)  processData:true,  //當前的數據是否使用傳統方式進行url編碼  traditional:true,  //請求數據編碼格式  contentType:'application/json'});

響應數據:dataType,dataFilter

$.ajax('/test',{  success:function(data){    console.log(typeof data)  },  //定義的返回數據的類型  dataType:'json | html | text | jsonp | script',  //返回底層的原始數據進行預處理  dataFilter:function(data,type){    //data:原始數據    //type:指定的數據類型  }  });

前置處理:beforeSend

$.ajax('/test',{  beforeSend:function(jqXHR,settings){    console.log(arguments);    jqXHR.setRequestHeader('test','haha');    jqXHR.testData = {a:1,b:2};  },  complete:function(jqXHR){    console.log(jqXHR.testData)  }});

請求類型:GET(默認) | POST | PUT | DELETE
同步異步:async(默認true)
是否緩存:cache(默認true)
其他參數:
1.global[是否觸發全局事件]
2.ifModifed[僅在服務器數據改變時候加載數據]
3.username,password[http需要驗證時候]
4.timeout[設置請求超時時間,若請求超時觸發error]
5.context[回調中this指向的對象]
其他相關的API

$.ajaxSetup(option)

設置全局默認參數

//默認為get請求$.ajax('/test');//修改全局請求方式為post$.ajaxSetup({  type:'post',  headers:{    test:new Date().getTime  },  cache:false});//請求方式改變為post$.ajax('/test');$.ajaxPrefilter([dataTypes],handler(option,originalOptions,jqXHR))

請求發起前的預處理,提供了一種AOP(面向切面)編程模式,常見用途:
1.根據option設定執行特定處理邏輯
2.修改option值改變請求默認行為
3.通過return修改默認dataType

例:通過return修改默認dataType

$.ajaxPrefilter('text html json',function(options,originalOptions,jqXHR){  //options請求參數,含默認值  //originalOptions請求時傳入的參數,不含默認值  //jqXHR:jQuery增強的XHR  console.log(arguments);  if(options.url == '/test'){    return 'text';  }});$.ajax('/test',{  type:'post',  dataType:'text',  //自定義屬性  test:'haha'});

例:多次請求僅最后一次有效,避免多次請求導致的數據混亂

var requests = {};$.ajaxPrefilter(function(options,originalOptions,jqXHR){  if(requests[options.url]){    requests[options.url].abort();  }  requests[options.url] = jqXHR;});$.ajax('/test/');$.ajax('/test/');

例:統一修改請求路徑

$.ajaxPrefilter(function(options){  if(options.url.substr(0,5) == '/usr'){    options.url = options.url.replace('/usr/','/user/');    options.header = {      a:1    }  }});$.ajax('/usr/');

全局事件

jQuery-1.9以后,全局事件必須綁定在document上

$(document).ajaxSuccess(globalEventHander);$(document).ajaxError(globalEventHander);$(document).ajaxComplete(globalEventHander);$(document).ajaxStart(globalEventHander);$(document).ajaxStop(globalEventHander);$(document).ajaxSend(globalEventHander);function globalEventHander(event){  console.log(arguments);  console.log(event.type);}$.ajax('/test?err=y');//請求成功$.ajax('/test?err=n');//請求失敗//請求順序://ajaxStart >> ajaxSend >> ajaxSend >> ajaxSuccess >> ajaxComplete >> ajaxError >> ajaxComplete >> ajaxStop

序列化

1.param[序列化一個 key/value 對象]
2.serialize[通過序列化表單值,創建 URL 編碼文本字符串]
3.serializeArray[通過序列化表單值來創建對象數組(名稱和值)]

例:param()

var params = { a:1, b:2 };var str = $.param(params);console.log(str);//a=1&b=2"

例:serialize()

<form>  <div><input type="text" name="a" value="1"/></div>  <div><input type="text" name="b" value="2"/></div>  <div><input type="hidden" name="c" value="3"/></div></form><script type="text/javascript">  $('form').submit(function() {   console.log($(this).serialize());   //a=1&b=2&c=3   return false;  });</script>

例:serializeArray()

<form>  First:<input type="text" name="First" value="1" /><br />  Last :<input type="text" name="Last" value="2" /><br /></form><script type="text/javascript">  $('form').click(function(){    x=$("form").serializeArray();    console.log(x);    //{[name:First,value:1],[name:Last,value:2]}  });</script>

ajax鏈式編程方法
在開發的過程,經常會遇到一些耗時間的操作,比如ajax讀取服務器數據(異步操作),遍歷一個很大的數組(同步操作)。不管是異步操作,還是同步操作,總之就是不能立即得到結果,JS是單線程語音,不能立即得到結果,便會一直等待(阻塞)。

一般的做法就是用回調函數(callback),即事先定義好一個函數,JS引擎不等待這些耗時的操作,而是繼續執行下面的代碼,等這些耗時操作結束后,回來執行事先定義好的那個函數。如下面的ajax代碼:

$.ajax({  url: "test.html",  success: function(){    console.log("success");  },  error: function(){    console.log("error");  }});

但這樣寫不夠強大靈活,也很亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

中文字幕精品—区二区| 日本国产欧美一区二区三区| 亚洲精品久久久久久久久| 欧美性xxxxx| 国产成人精品免费久久久久| 在线播放国产一区中文字幕剧情欧美| 国产香蕉一区二区三区在线视频| 这里只有精品在线观看| 亚洲a∨日韩av高清在线观看| 亚洲人成在线一二| 国产精品精品国产| 国产成人激情小视频| 欧美性高跟鞋xxxxhd| 18一19gay欧美视频网站| 国产91在线播放九色快色| 亚洲精品98久久久久久中文字幕| 日韩在线激情视频| 日韩av网址在线观看| 国产精品你懂得| 国产自产女人91一区在线观看| 亚洲韩国欧洲国产日产av| 97国产在线观看| 欧美在线观看视频| 中文字幕国产精品| 久久久噜噜噜久久中文字免| 欧美视频不卡中文| 成人免费淫片视频软件| 91精品中文在线| 91情侣偷在线精品国产| 国产丝袜一区二区三区| 亚洲免费伊人电影在线观看av| 在线观看国产成人av片| 国产在线观看91精品一区| 欧美精品在线看| 69国产精品成人在线播放| 91视频-88av| 国产精品丝袜一区二区三区| 亚洲深夜福利网站| www亚洲欧美| 日韩成人网免费视频| 亚洲精品理论电影| 九九热在线精品视频| 日韩在线观看免费全集电视剧网站| 91av视频在线观看| 欧美丝袜一区二区| 国产美女久久精品| 91高清免费视频| 91久久久久久久久久久| 久久久久久香蕉网| 亚洲精品国偷自产在线99热| 欧美激情视频一区二区三区不卡| 久久久久久久久久久成人| 自拍偷拍免费精品| 丝袜情趣国产精品| 自拍偷拍免费精品| 国产亚洲精品久久久优势| 深夜福利亚洲导航| 欧美大片va欧美在线播放| 亚洲影院高清在线| 日韩国产高清污视频在线观看| 日韩在线欧美在线| 欧美日韩亚洲一区二区三区| 欧洲日本亚洲国产区| 欧美另类xxx| 国产成人91久久精品| 97在线视频精品| 日本韩国在线不卡| 精品网站999www| 日韩午夜在线视频| 亚洲男人的天堂在线| 国产精品久久久久久五月尺| 亚洲成年人影院在线| 一区二区av在线| 成人写真视频福利网| 日韩美女视频免费在线观看| 久久国产精品影片| 日韩av在线免费播放| 国产精品久久激情| 欧美理论片在线观看| 欧美电影在线观看| 亚洲人成人99网站| 国产精品久久国产精品99gif| 亚洲精品成a人在线观看| 欧美激情按摩在线| 久久久噜噜噜久久中文字免| 中文字幕精品—区二区| 国产经典一区二区| 国产日本欧美一区二区三区在线| 国产一区在线播放| 欧美xxxwww| 久99九色视频在线观看| 亚洲护士老师的毛茸茸最新章节| 日日摸夜夜添一区| 午夜精品蜜臀一区二区三区免费| 久久天天躁狠狠躁夜夜爽蜜月| 97香蕉久久超级碰碰高清版| 亚洲成年人在线播放| 精品国产自在精品国产浪潮| 欧美一区二区三区免费观看| 97在线观看视频国产| 在线观看精品国产视频| 欧洲成人在线观看| 欧美一级黄色网| 日韩欧美在线一区| 日韩精品在线播放| 亚洲欧美激情四射在线日| 日韩欧美在线视频日韩欧美在线视频| 欧美夫妻性生活xx| 少妇激情综合网| 亚洲一级免费视频| 国产精品第七影院| 国产在线观看精品一区二区三区| 国产精品久久久久久久久男| 97成人精品区在线播放| 久久电影一区二区| 中文字幕免费国产精品| 色中色综合影院手机版在线观看| 亚洲成人激情图| 97超视频免费观看| 精品久久久香蕉免费精品视频| www.久久久久| 欧美网站在线观看| 自拍偷拍亚洲欧美| 国产成人高清激情视频在线观看| 国产精品电影久久久久电影网| 亚洲深夜福利在线| 久久精品久久久久久| 亚洲国产美女精品久久久久∴| 亚洲一区第一页| 国产精品999| 91免费在线视频| 疯狂做受xxxx欧美肥白少妇| 日本成熟性欧美| 中文字幕av一区中文字幕天堂| 亚洲精品资源在线| 亚洲性日韩精品一区二区| 91精品国产综合久久男男| 亚洲精品美女在线观看播放| 成人午夜激情免费视频| 久久久久久久久久久免费| 在线精品国产欧美| 国产欧美韩国高清| 91免费精品国偷自产在线| 91人成网站www| 欧美成人一区二区三区电影| 日韩精品中文字| 日韩欧美中文字幕在线播放| 91精品久久久久久久久久入口| 欧美一级免费视频| 欧美另类交人妖| 亚洲最大的免费| 国产精品久久久久国产a级| 91精品视频免费观看| 在线播放国产一区中文字幕剧情欧美| 欧美黑人视频一区| 97精品视频在线播放| 亚洲片在线观看| 久久精品中文字幕免费mv| 欧美中文字幕视频在线观看| 久久精品国产久精国产一老狼| 欧美日韩在线观看视频小说| 91精品国产免费久久久久久| 国产欧美va欧美va香蕉在线| 亚洲天堂影视av|