Ajax 資料非同步互動

一隻寫程式的猿發表於2018-01-16

#1.Ajax簡介 AJAX = 非同步 JavaScript 和 XML。 AJAX 是一種用於建立快速動態網頁的技術。 通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。

#2.AJAX 例項

  • 查詢提示
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>查詢訪問</title>

	<!-- 

	https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=
	https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=abc&cb=jQuery110206545585568528622_1499224165848&_=1499224165856
	 -->

	<style type="text/css">
		*{margin:0px;padding: 0px;}
		#container{width:800px;margin:auto;margin-top:10px;}
		input[id="keywords"]{width: 500px;height: 40px;border:solid 2px #cecece;font-size: 22px;line-height: 40px;color:#888;padding-left: 10px;} 	

		#sug{width:512px;list-style: none;border:solid 1px #ccc;}
		#sug li{height: 30px;background:#fcfcfc;line-height:30px;font-size:18px}

	</style>
	<script type="text/javascript" src="../jquery-1.12.4.js"></script>

</head>
<body>
	<div id="container">
		<div>
			<input type="text" id="keywords" placeholder="請輸入關鍵詞">
		</div>
		<ul id="sug">
			<!-- <li>建議搜尋的關鍵詞</li> -->
		</ul>
	</div>

	<script>
		// 獲取輸入框
		var $kw = $("#keywords");

		// 新增鍵盤按鍵抬起事件
		$kw.keyup(function(){
			// 獲取輸入框中的輸入
			var $value = $kw.val();

			// 呼叫函式,獲取資料
			$.ajax({
				url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?cb=?",
				type:"get",
				data:{wd:$value},
				dataType:"jsonp",
				success:function(msg){
					// 當url介面訪問成功的時候,自動呼叫success對應的函式,介面返回的資料會自動存放在函式的引數data中
					console.log(msg.s);
					// 將輸入輸出到頁面中;dom操作
					var _sug = msg.s;
					// 清空原來的url標籤;
					$("#sug").empty();

					for (var i = 0;i< _sug.length;i++){
						// 建立一個li標籤
						var $li = $("<li>")
						// 標籤中新增文字資料
						$li.text(_sug[i]);
						// 將li標籤,新增到頁面中
						$("#sug").append($li);


					}
				}
			}); 
		});

	</script>

</body>
</html>


<!-- 	dataType:"jsonp",
		同源策略:web規範了只有相同源頭(域名)的資料才可以互相訪問
		同源策略是為了資料的安全性,而設定的一種網路資料訪問限制

		跨域:從不同的域名下訪問指定的資料 -->

複製程式碼

效果展示:

查詢提示

  • 天氣預報查詢地址
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>天氣預報</title>
	<style>
		*{margin:0px;padding:0px;}
		#container{width:800px;margin:auto;font-size: 20px;font-weight: bolder;}
		input[id="city"]{width:500px;height:35px;border:solid 2px #cecece;font-size:22px;line-height:35px;color:#888;padding-left:10px; margin:10px;}
		#show{display:block;width: 600px;height: 300px;border: solid 2px #888;margin: 10px auto; list-style: none;padding: 10px;border-radius: 8px;box-shadow: 10px 10px 5px #888}

	</style>
	<script type="text/javascript" src="../jquery-1.12.4.js"></script>
</head>
<body>
	<div id="container">
		<div>
			請輸入城市名稱:
			<input type="text" id="city" placeholder="請輸入想查詢的地區">
		</div>
		<ul id="show">
			<li>天氣資訊</li>
		</ul>
		
	</div>

 <script>
		// 獲取需要的標籤物件
		var _city = $("#city");
		var _show = $("#show");

		// 新增事件處理
		_city.blur(function(){
			// 獲取輸入框中的輸入資料
			var $value = _city.val();

			_show.empty();
			// 呼叫函式,獲取資料
			$.ajax({
				url:"http://wthrcdn.etouch.cn/weather_mini?callback=?",
				type:"get",
				data:{city:$value},
				dataType:"jsonp",
				success:function(msg){
					// 當url介面訪問成功的時候,自動呼叫success對應的函式,介面返回的資料會自動存放在函式的引數data中
					console.log(msg);
					// 獲取城市資料,展示到頁面中
					var $city = $("<li>");
					$city.text(msg.data.city + "天氣預報資訊:");

					// 獲取今天溫度資料
					var $wd = $("<li>");
					$wd.text("今天溫度:"+ msg.data.wendu);

					// 獲取今天感冒指數資料
					var $gm = $("<li>");
					$gm.text("溫馨提示:"+ msg.data.ganmao);

					// 今天天氣預報
					var $today = $("<li>");

					var $date = $("<span>").text("日期:" + msg.data.forecast[0].date)
					var $type = $("<span>").text(";今天天氣:" + msg.data.forecast[0].type)
					var $high = $("<span>").text(";最高氣溫:" + msg.data.forecast[0].high)
					var $low = $("<span>").text(";最低氣溫:" + msg.data.forecast[0].low)
					var $fl = $("<span>").text(";風力:" + msg.data.forecast[0].fengli)
					var $fx = $("<span>").text(";風向:" + msg.data.forecast[0].fengxiang)

					$today.append($date).append($type).append($high).append($low).append($fl).append($fx);

					_show.append($city).append($wd).append($gm).append($today);
				},	
				error:function(){
					console.log("執行錯誤...");				
				}
			}); 
		});

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

複製程式碼

效果展示:

天氣查詢

  • 快遞單號查詢介面
	<!DOCTYPE html>
	<html>
	<head>
		<meta charset="utf-8">
		<title>快遞資訊查詢</title>
		<style type="text/css">
			*{margin: 0;padding: 0;}
			#container{width: 800px;margin: 15px auto;font-size: 20px;font-weight: bolder;}
			select[id="company"]{width: 200px;height: 30px;font-size: 18px;font-family: "微軟雅黑";border-radius: 5px;}
			#wb{float: left;}
			input[id="postid"]{margin:10px auto;width: 200px;height: 20px;font-size: 14px;font-family: "微軟雅黑";border-radius: 3px;}
			button[id="cx"]{display: block;width: 56px;height: 26px;background-color:#388bff;color:white;margin: 8px 380px;}
			ul[id="show"]{list-style: none;width: 500px;height:500px;border:solid 2px #888; border-radius: 8px; }
			#container ul li p{padding:15px;width:480px;
				min-height: 50px;font-size:14px;}

		</style>

		<script type="text/javascript" src="../jquery-1.12.4.js">
		</script>

	</head>
	<body>
		<div id="container">
			<div>
				<label for="company">快遞公司名稱</label>
				<select id="company" name="address">
						<option value="shunfeng">順豐速運</option>
						<option value="shentong">申通快遞</option>
						<option value="ems">EMS</option>
						<option value="yuantong">圓通速遞</option>
						<option value="zhongtong">中通快遞</option>
						<option value="tiantian">天天快遞</option>
						<option value="huitongkuaidi">匯通快遞</option>
						<option value="yunda">韻達速遞</option>
						<option value="quanfengkuaidi">全峰快遞</option>
						<option value="debangwuliu">德邦</option>
						<option value="zhaijisong">宅急送</option>
				</select>
			</div>
			<div id="wb">
				<label for="post">輸入快遞單號</label>
				<input type="text" id="postid">
			</div>
			<div>
				<button id="cx">查詢</button>
			</div>

			<ul id="show">
				<li>
					<i></i>
					<p>物流資訊</p>
				</li>
			</ul>
			<div style="clear:both;"></div>
		</div>

		<script>
			// 獲取標籤物件:快遞公司
			var $selector=$("#company");
			// 獲取快遞單號
			var $postid=$("#postid");
			// 查詢
			var $cx=$("#cx");

			// 給查詢按鈕新增點選事件
			$cx.click(function(){
				// 獲取需要的資料
				var $company = $selector.val();
				var $value = $postid.val();

				// ajax 獲取資料
				$.ajax({
					url:"https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?cb=?",
					type:"get",
					data:{com:$company,nu:$value,appid:4001},
					dataType:"json",
					success:function(msg){
						// 清空歷史訊息
						$("#show").empty();

						// 獲取介面返回的資料
						console.log(msg);
						var $info = msg.data.info.context;

						// 迴圈遍歷資料
						for(var i = 0; i <$info.length;i++){
							// 獲取每一筆的時間資訊
							var $time = $info[i].time;
							$time = getTimeStr($time);

							// 獲取每一筆的快遞資訊
							var $desc = $info[i].desc;

							// 建立標籤,新增到頁面中
							var $msg = $("<p>").text($time + ":" + $desc);
							var $i = $("<i>");

							var $kd = $("<li>");
							$kd.append($i).append($msg);
							// 新增到頁面中
							$("#show").append($kd);
						} 


					},
					error:function(){
						console.log("系統繁忙,查詢失敗");
					}
				});
			});

			// 獲取時間字串
			function getTimeStr(dt){
				var _date = new Date(parseInt(dt*1000));
				return _date.getFullYear() + "-" + (_date.getMonth() + 1) + "-" + _date.getDate() + " " + _date.getHours() + ":" + _date.getMinutes() + ":" + _date.getSeconds();


			}
		</script>


	</body>
	</html>

複製程式碼

效果展示

快遞查詢

#####推薦幾個網站

jQuery外掛庫:JS特效,網頁特效,以及各種html5,css3動畫和效果

Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發更加快捷。

阿里巴巴向量圖示庫:Iconfont-國內功能很強大且圖示內容很豐富的向量圖示庫,提供向量圖示下載、線上儲存、格式轉換等功能。

Swiper(Swiper master):是目前應用較廣泛的移動端網頁觸控內容滑動js外掛。

相關文章