1. 程式人生 > >ajax—非同步javascript xml

ajax—非同步javascript xml

概念

ajax(非同步javascript xml) 能夠重新整理區域性網頁資料而不是重新載入整個網頁

優點

 1.可以實現非同步通訊效果,實現頁面區域性重新整理,帶來更好的使用者體驗  2.按需獲取資料,節約頻寬資源

分類

分為 原生ajax jQuery 中的 ajax , 其中原生ajax是核心

原生ajax

過程如下:

  • 1. 例項化XHR物件
let xhr = new XMLHttpRequest();
  • 2. 開啟請求(設定請求行)
xhr.open(method,url);
  • 3.設定請求頭資訊
xhr.responseType = 'json';
xhr.setRequestHeader('Content-type','application/json');
  • 4.設定監聽
xhr.onreadystatechange = function(){
  if(this.readyState = 4){
    if(this.status == 200){
       響應成功
       this.response
     } else {
       失敗
     }
   }
}
  • 5.傳送請求(請求體)
xhr.send(JSON.stringify(data));

提交的資料型別分為:查詢字串 、 json

  • 引數型別為查詢字串

  1.Content-Type

     x-www-form-urlencoded

   2.send()

      如果要傳送的資料格式為:

       var obj = {

           name:'xpf',

           age:'22'

        }

       那麼在傳送的時候一定要將obj轉換為查詢字串,send(qs.stringify(obj)); qs必須在ES6模組程式碼下才能用,也可以手動封裝

  • 引數型別為json

   1.Content-Type

       application/json

    2.send()

        var obj = {

           name:'xpf',

           age:'22'

        }

        在傳送的時候一定要將obj轉換為json字串,send(JSON.stringify(obj));

例子如下:

  • 引數為查詢字串
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生ajax</title>
    <script>	

	var url = 'http://120.78.164.247:8099/manager/category/saveOrUpdateCategory';
	var method = 'POST';
	var successHandler = function(){
		alert('請求成功');
		console.log(this.response);
	}
	var errorHandler = function(){
		alert('請求失敗');
		console.log(this.response);
	}

	var xhr = new XMLHttpRequest();
	xhr.open(method,url);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.onreadystatechange = function(){
		if(this.readyState == 4){
			if(this.status == 200){
				successHandler.call(this);
			} else{
				errorHandler.call(this);
			}
		}
	}

	xhr.send('name=xpf&comment=thisIsTest&no=1010');

    </script>
</head>
<body>
	
</body>
</html>

結果如下:

           

          

  • 引數為json
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生Ajax</title>
    <script>
		
	var url = 'http://120.78.164.247:8099/manager/category/findAllCategory';
	var method = 'GET';
	var successHandler = function(){
		alert('請求成功');
		console.log(this.response);
	}
	var errorHandler = function(){
		alert('請求失敗');
		console.log(this.response);
	}
	
	var xhr = new XMLHttpRequest();
	xhr.open(method,url);
	xhr.setRequestHeader('Content-type','application/json');
	xhr.onreadystatechange = function(){
		if(this.readyState == 4){
			if(this.status == 200){
				successHandler.call(this);
			} else{
				errorHandler.call(this);
			}
		}
	}

	xhr.send();

    </script>
</head>
<body>
	
</body>
</html>

結果如下:

查詢欄目時請求體沒有引數

jQuery 中的 ajax

例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jquery</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
	var url = 'http://120.78.164.247:8099/manager/category/saveOrUpdateCategory';
	var obj = {
		name:"test02",
		comment:"thisIsTest02",
		no:1002
	}
	$.post(url,obj,function(data){
		alert('成功');
		console.log(data);
	});
    </script>
</head>
<body>
	
</body>
</html>

結果如下:

       

                    ------------------本文完------------------