ajax的封裝使用

面試的時候有人問到我ajax的使用,當時回答的不算好,這裏想重新總結下:

1、如何將配置等信息傳到ajax函數裏面去

這個採用的是在參數里加一個對象,對象裏面放入字段,然後在ajax裏設置一個option,通過option調取配置信息,如url、請求方式等。

這樣就可以在參數對象中配置信息,而不需要在ajax裏面去配置(專務)

2、 如何將請求的東西返回給調用的ajax裏

這裏採用的是將參數對象裏再加入一個函數,函數中的參數數據是和封裝裏面調用的函數參數數據是共享的,就相當於以移花接木的方式,又將封裝函數裏的數據轉移到參數對象的函數中去了。

代碼:
點擊之後就可以發送請求了

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style>
	#button1{
	background:skyblue;
	border-radius:20px;
	width:100px;
	}
    #input1{
        height: 200px;
        width: 200px;
    }
	</style>
</head>
<body>
<button id="button1">按鈕</button>
<input id="input1" type="textarea">
</body>
<script type="text/javascript">
document.getElementById("button1").onclick = getIt;
function getIt() {
    ajax({
     type: 'post',
     url: 'http://k1998.xyz/php/public/index.php/index/music/lists',
     data: {
         'name': 'username',
         'password': '123456'
     },
     success:function(data){
            console.log(data);
            
     },
     error:function(e){ console.log(e); }
         });
}




function ajax(option){
    console.log(option);
/*1、創建對象
  2、設置請求方式和請求地址
  3、發送請求
  4、註冊回調函數
  5、判斷是否完成是否正確返回數據
*/
	var xhr=new XMLHttpRequest();
	xhr.open(option.type,option.url,true);//true代表的是否發佈異步請求

    //配置請求
    let data = {
        ...option.data
    }
    xhr.setRequestHeader("Content-type","application/json");
	xhr.send({name:'jjj'});
	xhr.onreadystatechange = callback;

    function callback(){
			if(xhr.readyState == 4){
            option.success&&option.success(xhr.responseText,xhr.responseXML);

			}
	}
}

</script>
</html>

我認爲封裝的核心其實就是把重複的代碼封存起來,把要變化的代碼移上去,這樣就達到簡化操作的目的,使得每次不用一直重複使用代碼,造成代碼的冗餘
在剛開始看來,運用函數裏的參數進行傳值,這是一個挺新穎的用法,我覺得是挺有趣的!!!
以後還是要多看看源碼,主要是學會這種思維,便於自己去學習技術!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章