什么是 AJAX ?

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

XMLHttpRequest 对象

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.。

Ajax-LMLPHP

向服务器发送请求

如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:

Ajax-LMLPHP

get还是post?

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

 XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true.

服务器响应

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

onreadystatechange 事件

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

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

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

下面是 XMLHttpRequest 对象的三个重要的属性:

Ajax-LMLPHP

注意:

当 readyState 等于 4 且状态为 200 时,表示响应已就绪。

onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

示例一:原生Ajax

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload=function(){
				var oBtn=document.getElementById("btn1");
				oBtn.onclick=function(){
					//1.创建ajax对象
					var xhr=null;
					//方式1
					if(window.XMLHttpRequest){    //IE7+, Firefox, Chrome, Opera, Safari
						xhr = new XMLHttpRequest();
					} else {    //IE6, IE5
						xhr = new ActiveXObject("Microsoft.XMLHTTP")
					}

					//方式2
					try{
						xhr = new XMLHttpRequest();
					}catch(e){
						xhr = new ActiveXObject("Microsoft.XMLHTTP")
					}


					//2.连接服务器  open(方法,url,是否异步:true为异步,false为同步)
					xhr.open('GET','1.txt',true);   //注意:路径也可以是../1.txt

					//3.发送请求
					xhr.send();

					//4.接收服务器的返回值
					xhr.onreadystatechange=function(){
						if(xhr.readyState==4){
							if(xhr.status==200) {
								alert(xhr.responseText)
							}
							else{
								alert("读取失败")
							}
						}
					}
				}

			}
		</script>
	</head>
	<body>
		<input id="btn1" type="button" value="查看"/>
	</body>
</html>

 

 

示例二:获取新闻标题和事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/JSON.js"></script>
		<script type="text/javascript">
			window.onload=function(){
				var oInput=document.getElementById("input1");

				oInput.onclick=function(){
					var xhr=null
					if(window.XMLHttpRequest){    //IE7,Firefox, Chrome, Opera, Safari
						xhr=new XMLHttpRequest();
					}else{    //IE6,IE5
						xhr=new ActiveXObject("Microsoft.XMLHTTP")
					}

					xhr.open("GET","news.php",true);
					xhr.send();

					xhr.onreadystatechange=function(){
						if(xhr.readyState==4){
							if(xhr.status==200){
								var data=JSON.parse(xhr.responseText);   //JSON.parse方法用于将一个 JSON 字符串转换为对象。
//								alert("chengg"+data[0].title)

								var oUl=document.getElementById("ul1");
								var html=""
								for(var i=0;i<data.length;i++){
									html+='<li>'+data[i].title+"-"+data[i].date+'</li>'
								}
								oUl.innerHTML=html;
							}else{
								alert("获取失败"+xhr.status)
							}
					    }
				    }

				}
			}
		</script>
	</head>
	<body>
		<input type="button" id="input1" value="今日新闻" />
		<ul id="ul1"></ul>
	</body>
</html>

 

10-07 10:32