日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript---Ajax和函数回调,异步编程

發(fā)布時間:2024/4/14 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript---Ajax和函数回调,异步编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一 Ajax 函數(shù)的定義 ?:??Asynchronous JavaScript and XML(異步的 JavaScript 和 XML),無刷新的從服務器讀取數(shù)據(jù),可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新,使網(wǎng)頁實現(xiàn)異步更新。

交換過程:

  1 創(chuàng)建對象

  2 建立連接

  3 發(fā)送請求

  4 接收數(shù)據(jù)( 調(diào)用回調(diào)函數(shù))

1 function ajax(json){ 2 if(!json.url){return;} 3 json = json||{}; 4 json.type = json.type||'GET'; 5 json.data = json.data||{}; 6 json.timeout = json.timeout||10000; 7 //1.創(chuàng)建對象 8 if(window.XMLHttpRequest){ 9 //chrome FF IE7+ 10 var oAjax = new XMLHttpRequest(); 11 }else{ 12 //IE低版本 13 var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); 14 } 15 switch(json.type.toLowerCase()){ 16 case 'get': 17 //2.建立連接 //是否異步 18 oAjax.open('GET',json.url+'?'+json2url(json.data),true); 19 //3.發(fā)送 20 oAjax.send(); 21 break; 22 case 'post': 23 oAjax.open('POST',json.url,true); 24 oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 25 oAjax.send(json2url(json.data)); 26 break; 27 } 28 json.loading&&json.loading(); 29 //超過json.timeout 后認為失敗 不在請求 30 var timer = setTimeout(function(){ 31 json.error&&json.error(); 32 json.complete&&json.complete(); 33 oAjax.onreadystatechange = null; 34 },json.timeout); 35 36 //4.接收 37 //當網(wǎng)絡狀態(tài)改變的時候 38 oAjax.onreadystatechange = function(){ //每當 readyState 改變時,就會觸發(fā) onreadystatechange 事件 39 //網(wǎng)絡狀態(tài) 40 if(oAjax.readyState == 4){ //0: 請求未初始化 1: 服務器連接已建立 2: 請求已接收 3: 請求處理中 4: 請求已完成,且響應已就緒 41 //http狀態(tài) 42 if(oAjax.status>=200&&oAjax.status<300||oAjax.status==304){ 43 //服務器返回的數(shù)據(jù) 44 clearTimeout(timer); 45 json.success&&json.success(oAjax.responseText); //執(zhí)行回調(diào)函數(shù) 46 json.complete&&json.complete(); 47 }else{ 48 clearTimeout(timer); 49 json.error&&json.error(oAjax.status); 50 json.complete&&json.complete(); 51 } 52 } 53 }; 54 }

二,Ajax的調(diào)用:

1 ajax({ 2 url:url, 3 data:{ 4 //數(shù)據(jù)接口 7 }, 8 success:function(str){ 10 var json = eval('('+str+')'); 11 if(!json.error){ 12 alert('發(fā)表成功'); 13 //成功之后運行的代碼18 } 19 } 20 });

三 ,異步和回調(diào)函數(shù)

  參考連接 :?http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html

  異步編程:?同步模式:后一個任務等待前一個任務結(jié)束,然后再執(zhí)行,程序的執(zhí)行順序與任務的排列順序是一致的、同步的

       "異步模式":每一個任務有一個或多個回調(diào)函數(shù)(callback),前一個任務結(jié)束后,不是執(zhí)行后一個任務,而是執(zhí)行回調(diào)函數(shù),后一個任務則是不等前一個任務結(jié)束就執(zhí)行,所以程序的執(zhí)行順序與任務的排列順序是不一致的、異步的。

  異步編程的方法:

   回調(diào)函數(shù):把一個函數(shù)f1作為參數(shù)傳遞給另一個函數(shù)f2,并在f2中在恰當?shù)臅r機執(zhí)行,這個f1就叫回調(diào)函數(shù),常見的比如事件函數(shù),定時器,ajax。  

   事件監(jiān)聽:任務的執(zhí)行不取決于代碼的順序,而取決于某個事件是否發(fā)生。 

轉(zhuǎn)載于:https://www.cnblogs.com/bugda/p/6080656.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript---Ajax和函数回调,异步编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。