1. 程式人生 > >Ajax之非同步同步請求

Ajax之非同步同步請求

同步、非同步

ajax物件.open(方式get/post,url地址,[非同步true]同步false);

ajax是可以與伺服器進行(非同步或同步)互動的技術之一。

非同步:同一個時間點允許執行多個程序。

同步:同一個時間點只允許執行一個程序。

伺服器端04.php:

<?php

echo "computer";

同步請求:

客戶端04async.html:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>ajax同步</title>
	<script type="text/javascript">
	alert(1234);
	</script>
</head>
<body>
	<img src="./1.png" alt="" width="400" height="300">
</body>
</html>

實現效果:


非同步請求:

客戶端05async.html:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>ajax同步</title>
	<script type="text/javascript">
		var xhr = new XMLHttpRequest();
		xhr.onreadystatechange = function(){
			if (xhr.readyState==4) {
				alert(xhr.responseText);
			}
		}
		xhr.open('get', './04.php', true);//非同步請求
		//xhr.open('get', './04.php', false);//同步請求
		xhr.send(null);
	</script>
</head>
<body>
	<img src="./1.png" alt="" width="400" height="300">
</body>
</html>

實現效果:



    非同步請求只是給使用者視覺上的同時呈現,但是若ajax請求響應或img響應時間不一致也會出現先後順序,只是同一時間點多個程序同時執行。

什麼時候使用同步請求?

    ajax絕大多數情況下進行非同步請求,但是有的時候也要使用“同步請求(其不能取代)。

    例如頁面有兩部分內容,ajax請求內容和正常的html內容輸出,如果html的輸出內容包括ajax請求的內容,就需要使用ajax請求完成了再進行html內容的輸出,這樣就要設定兩者一前一後呼叫(而非同時呼叫),既要進行同步請求