ajax学习篇(二)XMLHttpRequest的创建和使用

前言:上篇我们介绍了ajax是什么和ajax的执行流程本篇我们介绍实现ajax的对象XMLHttpRequest对象

1.如何使用XMLHttpRequest做ajax请求?

首先我们要先创建XMLHttpRequest对象,按标准new XMLHttpRequest()即可得到,但是如果考虑到低版本的ie那么我们可以new Window.ActiveXObject(Mircosoft.XMLHttp);

下面我们写一个版本兼容函数来创建我们的XMLHttpRequest对象。

 1 function createXHR () {
 2          if (typeof XMLHttpRequest != ‘undefined‘) {
 3              return new XMLHttpRequest();
 4          }
 5          var version = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘,‘MSXML2.XMLHttp‘];
 6          for (var i = 0; i < version.length; i++) {
 7              try {
 8                  return new ActiveXObject(version[i]);
 9              }catch (e) {}
10          }
11      }

上面就是我们创建XMLHttpRequest 的版本兼容函数,如果你不需要考虑版本兼容问题那么直接new XMLHttpRequest对象即可。

在上一篇的博文中我们已经介绍了ajax的请求流程,上面则是我们的第二个流程创建xhr对象,那么接下来则开始我们第三流程发送请求访问服务端,

2.如何请求后台服务器?

分析http协议,要请求需要明确这样几个因素

1.用什么方法来请求?(GET,POST,DELETE,HEAD)

2.请求哪个资源?(url)

3.同步方式--同步/异步?

接下来我们来创建一个简单的ajax请求完成异步投票(这个需求很简单,就是页面每点击一次按钮我们的票数就增加一次)

首先我们在页面创建一个简单的按钮

并且为按钮绑定一个点击事件(这个按钮的id就是vote)

 1   var vote = document.getElementById(‘vote‘);
 2      vote.onclick = function () {
 3
 4      }
 5      function createXHR () {
 6          if (typeof XMLHttpRequest != ‘undefined‘) {
 7              return new XMLHttpRequest();
 8          }
 9          var version = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘,‘MSXML2.XMLHttp‘];
10          for (var i = 0; i < version.length; i++) {
11              try {
12                  return new ActiveXObject(version[i]);
13              }catch (e) {}
14          }
15      }

创建一个名为vote.php文件(这里服务端使用php)

1 <?php
2 // 文件路径
3 $path = "vote.txt";
4 // 如果文件不存在则创建
5 is_file($path) || file_put_contents($path,"0");
6 // 读取文件内容将内容+1并重新写入
7 file_put_contents($path,file_get_contents($path) + 1);

这个文件代码如下非常简单,我们这里就不和数据库交互存储使用文件就好了

接下来开始实现我们的ajax请求

 1    var vote = document.getElementById(‘vote‘);
 2      vote.onclick = function () {
 3          // 1.创建xhr对象
 4          var xhr = createXHR()
 5          // 2.打开url连接
 6          // 参数一:请求方法(GET,POST,DELETE,HEAD)
 7          // 参数二:请求url
 8          // 参数三:同步异步(true为异步,false为异步)
 9          xhr.open("GET","vote.php",true)
10          // 3.发送请求
11          // 参数一:请求数据,这里我们是get请求所以填写null
12          xhr.send(null)
13      }
14      function createXHR () {
15          if (typeof XMLHttpRequest != ‘undefined‘) {
16              return new XMLHttpRequest();
17          }
18          var version = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘,‘MSXML2.XMLHttp‘];
19          for (var i = 0; i < version.length; i++) {
20              try {
21                  return new ActiveXObject(version[i]);
22              }catch (e) {}
23          }
24      }

这样我们的ajax请求就实现啦!

这里可以看到每次请求和返回值,大家要善于使用NetWork

这里这样就实现完咯最后附上全部代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>XMLHttpRequest的创建和使用</title>
 6 </head>
 7 <body>
 8   <button id="vote">投票</button>
 9   <script type="text/javascript">
10      var vote = document.getElementById(‘vote‘);
11      vote.onclick = function () {
12          // 1.创建xhr对象
13          var xhr = createXHR()
14          // 2.打开url连接
15          // 参数一:请求方法(GET,POST,DELETE,HEAD)
16          // 参数二:请求url
17          // 参数三:同步异步(true为异步,false为异步)
18          xhr.open("GET","vote.php",true)
19          // 3.发送请求
20          // 参数一:请求数据,这里我们是get请求所以填写null
21          xhr.send(null)
22      }
23      function createXHR () {
24          if (typeof XMLHttpRequest != ‘undefined‘) {
25              return new XMLHttpRequest();
26          }
27          var version = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘,‘MSXML2.XMLHttp‘];
28          for (var i = 0; i < version.length; i++) {
29              try {
30                  return new ActiveXObject(version[i]);
31              }catch (e) {}
32          }
33      }
34   </script>
35 </body>
36 </html>

本篇就到这里结束啦,下一篇介绍ajax请求回调的各项返回值

时间: 2024-11-08 15:25:31

ajax学习篇(二)XMLHttpRequest的创建和使用的相关文章

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

Ajax学习笔记(二)

二.prototype库详解 1.prototype库的使用 //导入下载好的prototype.js文件 <script type="text/javascript" src="prototype.js"></script> //在自己的js中直接使用Prototype对象 <script type="text/javascript"> document.writeln("Prototype库的版本

AJax 学习笔记二(onreadystatechange的作用)

AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了onreadyStateChange事件实现这一功能.这类似于回调函数的做法.onreadyStateChange事件可指定一个事件处理函数来处理XMLHttpRequest对象的执行结果,如: 复制代码 代码如下: ajaxObj=createAjaxObject(); var url="/MyTod

基于CentOS的Mysql学习补充二--使用Shell创建数据库

文章出处:基于CentOS的Mysql学习补充二--使用Shell创建数据库 关于使用基于命令使用mysql数据库的方法可见文章<基于CentOS的Mysql的使用说明>,本文只要介绍如何使用Shell脚本来创建我们想要的数据库,下面给出我创建数据库的Shell脚本,基本也就是将mysql的一些命令放在shell脚本里面而已. #!/bin/bash #Author: chisj #Time: 2015.7.22 #Describe: Create Database #The username

ajax学习篇(一)

前言:很久之前学Ajax,今天突然觉得应该写写笔记,记录一下学习Ajax的历程. 首先了解一下什么ajax,其实ajax的一些特点和优点又或者缺点现在百度一下就会出来一大堆关于ajax的解释,那么我们就简单用一句概括一下ajax吧. 1.所谓ajax? 就是指:页面在不刷新的情况下,利用XMLHttpRequest发送Http请求JS网络化. 好,接下来就直接进入正题咯.关于其他更多ajax的解释什么的我就不想写太多,不懂百度一下(嘻嘻) 2.ajax执行流程? 下面我们用一张图来表达 上面就是

AJax 学习笔记一(XMLHTTPRequest对象)

现在很多公司都在做标准的静态页面,为了增强客户的体验效果,经常会涉及到AJax效果,而设计AJax使用的一种重要技术(工具)就是XMLHttpRequest对象了.今天学习了点关于XMLHttpRequest对象的一些方法和属性,有点体会,在这里也想记录起来. 1.何为XMLHttpRequest  定义:XMLHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部

Ajax学习(二):模仿jQuery的Ajax封装工具

通过上一节的学习,基本了解Ajax的使用, 但是这样使用很麻烦,这里封装ajax为一个方法,作为一个ajax工具,传入相应参数就可以实现ajax的使用. 模仿jQuery的Ajax. 如下是jQuery的Ajax使用,只需要传入相应参数,即可实现Ajax 第一步:创建Ajax工具类: function createXMLRequst(){ try{ return new XMLHttpRequest(); }catch(e) { try{ return new ActiveXObject("Ms

Ajax学习(二)—— 一个简单的Ajax实例

通过上篇博客认识Ajax之后,我们通过一个简单的实例来消化消化理论知识,一睹Ajax的庐山真面目. 1.实例功能: 当用户输入用户名,文本框失去焦点后,通过异步调用来判断该用户名是否已经存在.若存在,则在上图中红框处显示提示.当用户名可用时,提交按钮变为可用状态. 2.设计Html页面: <span style="font-family:SimSun;font-size:18px;"><strong><span style="font-famil

ajax学习(二)-jquery的ajax方法总结

//ajax静态方法-ajax() //常用ajax属性总结 $.ajax({ url:"", async:false, dataType:"jsonp",//jsonp,json,text,html,script,xml data: {name:"John",location:"Boston"}, timeout:, type:,//get or post username:, password:, //事件 beforeS