Ajax的基本使用

ajax

  • 介绍:

    • AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

      • AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

      • AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容

      • AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

      • AJAX是前端向后台提交数据最重要的手段!也是构建前后端分离的核心技术!

  • 作用:

    • 不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。异步操作
  • ajax

    • 运行原理

      • 先创建一个ajax请求对象(XMLHttpRequest)
      • 向指定的服务器发起HTTP请求
      • 判断ajax对象状态,合适时机获取返回数据!
      • 前端接收数据进行页面更新操作
    • 基本使用

      1. 创建一个XMLHTTPRequest对象 有两种方式

        • 第一种大多数浏览器都支持的

          var ajax = new XMLHttpRequest ();

        • 第二种IE5 和 IE6 使用 ActiveXObject

          IE5 和 IE6 使用 ActiveXObject

      2. 设置访问路径和方式

        • ajax向后台服务器发起请求!设置请求参数 请求的方式 以及 请求的网络地址
          ajax.open(“GET”,url) ;
      3. 发送请求:

        • 设置好以后需要调用发送的方法

          ajax.send();

      4. 监控Ajax的状态:

        • 当请求被发送到服务器时,我们需要执行一些基于响应的任务。

          每当 readyState 改变时,就会触发 onreadystatechange 事件。

          readyState 属性存有 XMLHttpRequest 的状态信息。

        • XMLHttpRequest对象的三个重要的属性:

          • onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

          • readyState 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

            • 0: 请求未初始化
            • 1: 服务器连接已建立
            • 2: 请求已接收
            • 3: 请求处理中
          • status

            • 200: “OK”

            • 404: 未找到页面

        ajax.onreadystatechange = function(){
        			//验证状态
        			if(ajax.status == 200 && ajax.readyState == 4){       
        				 //接受数据
        				var result = ajax.responseTest;
        		}
        

练习

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			body{
				background-color: #A4D3F6;
			}
			#show{
				background-color: #6FBEF9;
				width: 70%;
				margin:60px auto;
				border: #6FBEF9 solid 2px;
			}
			#left{
				display: inline-block;
				width: 31%;;
				border-right:white solid 1px ;
			}
			.right{
				display: inline-block;
				width: 16%;
				border-right:white solid 1px ;
			}
			#left img{
				display: block;
			}
			#mess-left{
				display: inline-block;
			}
			#mess-right{
				display: inline-block;
			}
			#left-foot p{
				display: inline-block;
			}
			#top{
				padding: 20px;
			}
			#se{
				padding: 10px;
				display: inline-block;
				width: 40%;
				background-color: #A4D3F6;
				border: #6FBEF9 solid 1px;
				border-radius: 9px;
			}
			#bu{
				padding: 10px;
				display: inline-block;
				width: 10%;
				background-color: #A4D3F6;
				border: #6FBEF9 solid 1px;
				border-radius: 9px;
			}
			#h1{
				font-size: 50px;
				text-shadow: 6px 6px 10px blue ;
			}
		</style>
	</head>
	<body>
		<center>
		<h1 id="h1" >天    气     预    报</h1>
		</center>
		<div id="show">
			<div id="top">
				<center>
					<div id="select">
						<input type="text" id="se" placeholder="请输入城市" />
						<button id="bu" onclick="select()">查询</button>
					</div>
		
				</center>
			</div>
			<hr />
			<div id="left">
				<center>
				<img id= "left-image" src="" />
				<p id="mess-left">24</p>
				<div id="mess-right">
					<sup></sup><sub id="mess-type"></sub>
				</div>
				
				<div id="left-foot">
					<p id="pyHL" ></p><br />
					<p id="pyTY"></p><br />
					<p id="pyFen"></p>
				</div>
				
				</center>
			</div>
			<div class="right">
				<center>
				<p id="p1" >周五</p>
				<img id="image1" src="" />
				
				<div id="left-foot">
					<p id="p1-1" ></p><br />
					<p id="p1-2" ></p><br />
					<p id="p1-3" ></p>
				</div>
				
				</center>
			</div>
			<div class="right">
				<center>
				<p id="p2" >周六</p>
				<img id="image2" src="" />
				
				<div id="left-foot">
					<p id="p2-1" ></p><br />
					<p id="p2-2" ></p><br />
					<p id="p2-3" ></p>
				</div>
				
				</center>
			</div>
			<div class="right">
				<center>
				<p id="p3" >周日</p>
				<img id="image3" src="" />
				
				<div id="left-foot">
					<p id="p3-1" ></p><br />
					<p id="p3-2" ></p><br />
					<p id="p3-3" ></p>
				</div>
				
				</center>
			</div>
			<div class="right" style="border: none;" >
				<center>
				<p id="p4" >周一	</p>
				<img id="image4" src="" />
				
				<div id="left-foot" >
					<p id="p4-1" ></p><br />
					<p id="p4-2" ></p><br />
					<p id="p4-3" ></p>
				</div>
				
				</center>
			</div>
			
			
			
		</div>
		
		<script type="text/javascript">
			var inp = document.getElementById("se");
			
			var ajax = new XMLHttpRequest();
			
			function select(){
				var sName = inp.value;
				
				var lujing = "http://wthrcdn.etouch.cn/weather_mini?ak=1233124124&city=" + sName ;
				ajax.open("GET" , lujing);
				
				ajax.send();
				var result ;
				
				ajax.onreadystatechange = function(){
					if(ajax.status == 200 && ajax.readyState == 4){
						result = ajax.responseText;
					
					
					if(result != "undefined"){
						var obj = JSON.parse(result);
					}else {
						alert(result);
					}
						
					var res = [] ;
					res = obj.data.forecast ;
						
						
						//昨天的天气
						var yHLIp = document.getElementById("pyHL");
						var yTyIp = document.getElementById("pyTY");
						var yFIp = document.getElementById("pyFen");
						var ylIp = document.getElementById("mess-left");
						var ytyIp = document.getElementById("mess-type");
						var yliIp =document.getElementById("left-image");
						
						var dateV = obj.data.yesterday.date;
						var hv = obj.data.yesterday.high;
						var lv =obj.data.yesterday.low ;
						var tv =obj.data.yesterday.type;
						var fv =obj.data.yesterday.fx;
						
						
						
						var hl = hv.substring(2,5) + "~" + lv.substring(2 , 5) +"<sup>℃</sup>" ;
						
						
						yHLIp.innerHTML = hl ;
						yTyIp.innerText = tv ;
						ytyIp.innerText = tv + "(实时)";
						yFIp.innerText = fv ;
						ylIp.innerText = lv.substring(2 , 5) ;
						yliIp.setAttribute("src" , "img/"+tv +".jpg");
						
						
						
						
						//接下来的天气
							for(var i = 0 ; i < res.length-1 ; i++){
							
							var dateIp = "p" + (i+1);
							var highLowIp = dateIp + "-1" ;
							var typeIp = dateIp + "-2";
							var fenIp = dateIp + "-3";
							var imIp = "image" + (i+1);
							
							var p1 = document.getElementById(dateIp) ;
							var p1HighLow = document.getElementById(highLowIp);
							var p1Type = document.getElementById(typeIp);
							var p1Fen = document.getElementById(fenIp);
							var p1Image = document.getElementById(imIp);
						
							var dateValue = res[i].date ;
							var highValue = res[i].high;
							var lowValue = res[i].low ;
							var typeValue = res[i].type;
							var fenValue = res[i].fengxiang;
							
							p1Image.setAttribute("src" , "img/"+typeValue +".jpg");
							
							highLow = highValue.substring(2,5) + "~" + lowValue.substring(2 , 5)+"<sup>℃</sup>";
							
							p1.innerText = dateValue ;
							p1HighLow.innerHTML = highLow ;
							p1Type.innerHTML = typeValue ;
							p1Fen.innerText = fenValue ;
						
						}
					}
				}
				
				
				
			}
			
			
		</script>
		
	</body>
</html>



<!--{"data":
	{"yesterday":{"date":"6日星期四","high":"高温 29℃","fx":"东风","low":"低温 23℃","fl":"<![CDATA[3级]]>","type":"中雨"},
		"city":"焦作",
		"forecast":[
		{"date":"7日星期五","high":"高温 29℃","fengli":"<![CDATA[2级]]>","low":"低温 23℃","fengxiang":"东南风","type":"中雨"},
		{"date":"8日星期六","high":"高温 28℃","fengli":"<![CDATA[1级]]>","low":"低温 23℃","fengxiang":"东南风","type":"小雨"},
		{"date":"9日星期天","high":"高温 32℃","fengli":"<![CDATA[1级]]>","low":"低温 25℃","fengxiang":"东南风","type":"小雨"},
		{"date":"10日星期一","high":"高温 34℃","fengli":"<![CDATA[2级]]>","low":"低温 26℃","fengxiang":"南风","type":"多云"},
		{"date":"11日星期二","high":"高温 31℃","fengli":"<![CDATA[3级]]>","low":"低温 25℃","fengxiang":"东风","type":"小雨"}],
		"ganmao":"感冒低发期,天气舒适,请注意多吃蔬菜水果,多喝水哦。","wendu":"26"},
		"status":1000,"desc":"OK"}-->
			
<!--		
			data.yesterday.date
			data.yesterday.high
			data.yesterday.low 
			data.yesterday.type
			data.yesterday.fx-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值