Ajax快速入门:原理、步骤与异步投票案例

需积分: 0 0 下载量 154 浏览量 更新于2024-09-02 收藏 135KB PDF 举报
"Ajax原理与应用案例快速入门教程" Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页内容的技术。通过Ajax,用户可以在不打断交互流程的情况下从服务器获取数据并局部更新网页。这极大地提升了用户体验,特别是在数据密集型的Web应用中。 Ajax原理 Ajax的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器交换数据。当用户触发某个事件(如点击按钮),JavaScript会创建一个XMLHttpRequest实例,然后通过这个对象向服务器发送HTTP请求。服务器处理请求后,将响应内容返回,JavaScript接收并处理这些数据,最后更新网页的部分内容,而无需刷新整个页面。 创建XMLHttpRequest对象 在不同的浏览器中,创建XMLHttpRequest对象的方法有所不同。对于支持W3C标准的现代浏览器,可以使用`new XMLHttpRequest()`,而在较旧的IE版本中,则需要使用`new ActiveXObject("Microsoft.XMLHTTP")`。为了确保兼容性,通常会封装一个函数来创建XMLHttpRequest对象,如下所示: ```javascript function createXhr() { var xhr = null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); // 谷歌、火狐等浏览器 } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); // ie低版本 } return xhr; } ``` 发送HTTP请求 发送HTTP请求主要涉及`xhr.open()`和`xhr.send()`方法。`open()`方法接受三个参数:请求类型(如GET或POST)、URL以及一个布尔值,指示请求是否为异步。例如: ```javascript xhr.open('GET', './05-ajax-vote.php', true); // 确定请求的路径 xhr.send(null); // 发送请求,携带数据为空 ``` 异步请求(通常推荐)会在后台执行,不会阻塞用户界面,而同步请求则会等待服务器响应,导致用户界面冻结。 回调函数和状态监测 Ajax请求过程中,可以设置回调函数来监听请求的状态变化。例如,当服务器响应准备好时,`onreadystatechange`事件会被触发。通常会检查`readyState`属性来判断请求是否完成,以及`status`属性来确认服务器返回的状态码是否表示成功。在请求成功并接收到数据后,可以使用`responseText`或`responseXML`属性获取响应内容。 案例:异步投票程序 一个简单的Ajax异步投票系统,可能包括一个HTML页面和服务器端处理投票的脚本。HTML页面上有一个投票按钮,点击按钮时,JavaScript会创建XMLHttpRequest对象,发送投票请求到服务器。服务器处理投票后,返回结果,JavaScript通过回调函数更新页面显示投票结果。 ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>无刷新投票界面</title> <script> function vote() { var xhr = createXhr(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 更新页面,显示投票结果 } }; xhr.open('POST', 'vote.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('id=1'); // 假设传递投票ID } </script> </head> <body> <button onclick="vote()">投票</button> </body> </html> ``` 这个例子展示了如何使用Ajax实现无刷新投票功能,用户点击按钮,页面上的JavaScript发送投票请求,服务器处理后返回结果,JavaScript更新页面展示新的投票计数。通过这种方式,用户无需离开当前页面即可完成投票,提高了交互性和用户体验。