ajax讲义

本文介绍了PHP中Ajax交互技术。先阐述了Ajax的概念、与传统web同步提交机制的区别及优势,如无刷新更新页面、提升用户体验、减轻服务器负担等。接着详细说明了原生Ajax的实现步骤,包括创建对象、设置回调函数、请求初始化、发送请求等,还提及了请求对象属性、方法及POST请求方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP中Ajax交互技术
一、介绍
1.什么是ajax?
Ajax允许浏览器和服务器之间通信并保证无刷新当前的请求页面,ajax最早是在IE中出现,后来得到了多数浏览器的支持,
用于实现异步通信的对象。

360、谷歌、火狐、苹果、IE

IE: ActiveXObject         下载一个ietest  5.5  6  7  8  
主流:XMLHttpRequest

//判断客户端使用的是什么浏览器

2.传统的web同步提交机制(同步)
异步与同步:
同步,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在响应用户,用户体验不好。(等)

异步,不用等所有操作等做完,就响应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。(不等)

3.ajax的优势
使用ajax可以实现无刷新的更新页面,减少用户心里以及实际的等待时间,当需要读取大量数据的时候,不会像重新加载一样出现白屏的情况,ajax使用XMLHttpRequest对象发送请求并得到服务器的相应,在不刷新载入整体页面的情况,使用JS操作DOM更新页面。
所以在请求的期间,用户看到的是原来的内容,只有当数据接收完毕之后才更新相应部分的内 容,这样的更新是瞬间的,用户几乎感觉不到。
具体的优势:
<1.>带来更好的用户体验。
<2.>可以将一些服务器负担的工作交给客户端,利用客户端闲置的能力来处理,减轻了 服务器和带宽的负担,节约空间和带宽租用成本。
❤️.>可以调用外部数据
<4.>基于标准化并被广泛支持的技术,不需要下载插件或者小程序等
<5.>进一步促进页面呈现和数据分离

二、原生ajax的实现步骤(四部曲)
注意:
因为ajax是基于浏览器中,不同的浏览器内置的对象也不同。
主要分为主流浏览器以及IE6版本以下浏览器。

1.创建ajax对象
–1.判断浏览器及创建ajax对象
var xmlhttp;
if(window.XMLHttpRequest){

			//创建请求对象  IE7+, Firefox, Chrome, Opera, Safari 主流浏览器执行的代码
			xmlhttp = new XMLHttpRequest();
	}else{
		//IE6  IE5浏览器
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
	}

2.设置回调函数(监听)
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState ==4 && xmlhttp.status ==200){
//ajax发送成功,返回数据
var str = xmlhttp.responseXML;
}
}

3.请求初始化
参数1:请求方式 get or post
参数2:请求地址 可带参数
参数3:true代表异步 false 代表同步
xmlhttp.open(“GET请求方式”,‘test.php请求地址及参数’,true);

4.发送
xmlhttp.send();

5.请求对象属性
 readyState 请求状态:0,1,2,3,4
 responseText 响应内容
 status 浏览器响应状态:200正常, 404 请求地址不存在 ,304 5*
 statusText 状态内容
 onreadystatechange 回调函数属性

z注意:
	0 未初始化状态:此时,已经创建了一个XMLHttpRequest对象
	1 准备发送状态:此时,已经调用了XMLHttpRequest对象的open方法,并且XMLHttpRequest对象已经准备好将一个请求发送到服务器端
	2 已经发送状态:此时,已经通过send方法把一个请求发送到服务器端,但是还没有收到一个响应
	3 正在接收状态:此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收到
	4 完成响应状态:此时,已经完成了HTTP响应的接收

6.方法
 open() 初始化 HTTP 请求参数
 send() 发送 HTTP 请求,使用传递给 open() 方法的参数
 setRequestHeader() 向一个打开但未发送的请求设置或添加一个 HTTP 请求

7.post请求方式
xmlhttp.open(“POST”,“文件地址”,true);
xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);
xmlhttp.send(“fname=Bill&lname=Gates”);

课堂代码

  <input type="text" id="text1"/>
  <button onclick="createajax()">点击</button>
  <script>
    function createajax(){
      var num = document.getElementById("text1").value;
      //第一步:判断客户端是哪种对象
      var xhrhttp = null;
      if(window.XMLHttpRequest){
           xhrhttp = new XMLHttpRequest();
      }else{
           xhrhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      var poststr = "a="+num+"&b=2";
      //第二步:打开请求   true 异步 默认值  false  同步
      xhrhttp.open("post","user/add/",true);
      //如果请求方式为post才去加
      xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
      //xhrhttp.send(null);
      xhrhttp.send(poststr);

      //第四步:ajax将服务端结果接受传回给客户端
      xhrhttp.onreadystatechange = function(){
          if(xhrhttp.readystate==4 && xhrhttp.status == 200){
              console.log(xhrhttp.responseText);
          }
      }

      //alert(xhrhttp);

      // 同步提交  异步提交
      /*
          同步:在同一个时间点就只能干一件事,这件事干完了才能得到结果
          异步:在同一个时间点干很多事,其中一件事干完了就交代结果 在去干另一件事
      */
    }
    

      



  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值