js實現jq的ajax

來源:互聯網
上載者:User

標籤:argument   safari   success   注釋   pen   tty   mic   狀態   實現   

本文將介紹如何使用js封裝一段代碼,實現jq的ajax功能,每一步代碼均有注釋便於理解

實現代碼
function ajax(){ //擷取ajax的相應值(請求類型,請求地址,同步或非同步,傳遞資料,接收資料類型,成功失敗函數等)  var ajaxData = {    type:arguments[0].type || "GET",    url:arguments[0].url || "",    async:arguments[0].async || "true",    data:arguments[0].data || null,    dataType:arguments[0].dataType || "text",    contentType:arguments[0].contentType || "application/x-www-form-urlencoded",    beforeSend:arguments[0].beforeSend || function(){},    success:arguments[0].success || function(){},    error:arguments[0].error || function(){}  }  ajaxData.beforeSend()  var xhr = createxmlHttpRequest();    //建立 XMLHttpRequest 對象  xhr.responseType=ajaxData.dataType;  //預期伺服器返回的資料類型  xhr.open(ajaxData.type,ajaxData.url,ajaxData.async);  //規定請求的類型、URL 以及是否非同步處理請求  xhr.setRequestHeader("Content-Type",ajaxData.contentType);  //發送資訊至伺服器時內容編碼類別型(向請求添加 HTTP 頭)  xhr.send(convertData(ajaxData.data));                     //將請求發送到伺服器  //當請求被發送到伺服器時,我們需要執行一些基於響應的任務。  //每當 readyState 改變時,就會觸發 onreadystatechange 事件。  //readyState 屬性存有 XMLHttpRequest 的狀態資訊。  xhr.onreadystatechange = function() {    if (xhr.readyState == 4) {      if(xhr.status == 200){        ajaxData.success(xhr.response)      }else{        ajaxData.error()      }    }  }}//建立 XMLHttpRequest 對象function createxmlHttpRequest() {  if (window.ActiveXObject) {    // IE6, IE5 瀏覽器執行代碼    return new ActiveXObject("Microsoft.XMLHTTP");  } else if (window.XMLHttpRequest) {     //  IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼    return new XMLHttpRequest();  }}//解析傳入的對象function convertData(data){  if( typeof data === ‘object‘ ){    var convertResult = "" ;    for(var c in data){      convertResult+= c + "=" + data[c] + "&";    }    convertResult=convertResult.substring(0,convertResult.length-1)    return convertResult;  }else{    return data;  }}
調用方法
ajax({      type:"POST",      url:"ajax.php",      dataType:"json",      data:{"val1":"abc","val2":123,"val3":"456"},      beforeSend:function(){        //some js code      },      success:function(msg){        console.log(msg)      },      error:function(){        console.log("error")      }    })

 

js實現jq的ajax

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.