ajax 和xmlHttpRequest区别
什么是 ajax
ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取。
http 请求
首先需要了解 http 请求的方法(GET 和 POST)。
GET 用于获取数据。GET 是在 URL 中传递数据,它的安全性低,容量低。
POST 用于上传数据。POST 安全性一般,容量几乎无限。
ajax 请求
ajax 请求一般分成 4 个步骤。
1、创建 ajax 对象
在创建对象时,有兼容问题:
- var oAjax = new XMLHttpRequest(); //for ie6 以上
- var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); //for ie6
合并上面的代码:
- var oAjax = null;
- if(window.XMLHttpRequest){
- oAjax = new XMLHttpRequest();
- }else{
- oAjax = new ActiveXObject('Microsoft.XMLHTTP');
- }
2、连接服务器
在这里会用到 open() 方法。open() 方法有三个参数,第一个参数是连接方法即 GET 和 POST,第二个参数是 URL 即所要读取数据的地址,第三个参数是否异步,它是个布尔值,true 为异步,false 为同步。
- oAjax.open('GET', url, true);
3、发送请求
send() 方法。
- oAjax.send();
4、接收返回值
onreadystatechange 事件。当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState:请求状态,返回的是整数(0-4)。
0(未初始化):还没有调用 open() 方法。
1(载入):已调用 send() 方法,正在发送请求。
2(载入完成):send() 方法完成,已收到全部响应内容。
3(解析):正在解析响应内容。
4(完成):响应内容解析完成,可以在客户端调用。
status:请求结果,返回 200 或者 404。
200 => 成功。
404 => 失败。
responseText:返回内容,即我们所需要读取的数据。需要注意的是:responseText 返回的是字符串。
- oAjax.onreadystatechange=function(){
- if(oAjax.readyState==4){
- if(oAjax.status==200){
- fnSucc(oAjax.responseText);
- }else{
- if(fnFaild){
- fnFaild();
- }
- }
- }
- };
将以上代码进行封装:
- //1.创建对象
- var oAjax = null;
- if(window.XMLHttpRequest){
- oAjax = new XMLHttpRequest();
- }else{
- oAjax = new ActiveXObject("Microsoft.XMLHTTP");
- }
- //2.连接服务器
- oAjax.open('GET', url, true); //open(方法, url, 是否异步)
- //3.发送请求
- oAjax.send();
- //4.接收返回
- oAjax.onreadystatechange = function(){ //OnReadyStateChange事件
- if(oAjax.readyState == 4){ //4为完成
- if(oAjax.status == 200){ //200为成功
- fnSucc(oAjax.responseText)
- }else{
- if(fnFaild){
- fnFaild();
- }
- }
- }
- };
- }
最后附上实例:
- <!DOCTYPE HTML>
- <html lang="en-US">
- <head>
- <meta charset="UTF-8">
- <title>ajax基础</title>
- </head>
- <body>
- 点击按钮的时候,读取abc.txt<input id="btn" type="button" value="读取"/><br/>
- <div id="con"></div>
- </body>
- </html>
- <script type="text/javascript" src="ajax.js"></script>
- <script type="text/javascript">
- window.onload = function(){
- var oBtn = document.getElementById('btn');
- var oCon = document.getElementById('con');
- oBtn.onclick = function(){
- ajax('abc.txt',function(str){
- oCon.innerHTML = str;
- });
- }
- }
- </script>
abc.txt 内容:
- 这是ajax调用的内容1。
- 这是ajax调用的内容2。
- 这是ajax调用的内容3。
ajax 和xmlHttpRequest区别的更多相关文章
- Egret和Http请求 (Ajax、XMLHttpRequest、Post、Get)
一 Http请求 二 AJax和XMLHttpRequest 三 一个Ajax例子 四 Egret中的egret.HttpRequest 五 Post和Get区别 一 Http请求 Http深入 ...
- angular 和jq 的AJAX的请求区别
最近项目中使用angular,结果发现后台没法获取参数,所以,稍微研究了一下两者在发送ajax时的区别. 注意angular和jquery的ajax请求是不同的. 在jquery中,官方文档解释con ...
- AJAX初探,XMLHttpRequest介绍
AJAX初探,XMLHttpRequest介绍 AJAX AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML. AJ ...
- 普通请求和ajax请求的区别
普通请求和ajax请求的区别? 下面的action返回一个json文件,文件内容为sts.*,data1
- 原生Ajax(XMLHttpRequest)
一.什么是Ajax: 全称Asynchronous JavaScript and XML: 异步的 JavaScript 和 XML: 可以在不重新加载整个页面的情况下(偷偷发数据),与服务器交换数据 ...
- 【js】 ajax 与 axios 区别
ajax 与 axios区别 Ajax: Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发 ...
- AJAX(XMLHttpRequest)进行跨域请求方法详解
AJAX(XMLHttpRequest)进行跨域请求方法详解(三) 2010年01月11日 08:48:00 阅读数:24213 注意:以下代码请在Firefox 3.5.Chrome 3.0.Saf ...
- Jquery ajax, Axios, Fetch区别
1. Jquery ajax, Axios, Fetch区别之我见 2. ajax.axios.fetch之间的详细区别以及优缺点
- 原生ajax、XMLHttpRequest和FetchAPI简单描述
什么是ajax ajax的出现,刚好解决了传统方法的缺陷.AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...
随机推荐
- /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 错误:
在安装tomcat时报了错: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 本机环境: [root@AY1405 ...
- OpenStack网络介绍
OpenStack网络介绍 OpenStack里面的网络相对复杂.经常有人对几个网络概念搞混淆.因此,本文对OpenStack里面的Provider network 和 Tenant netw ...
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
本文转自:http://blog.csdn.net/loongshawn/article/details/50496460 1. Mybatis JdbcType与Oracle.MySql数据类型对应 ...
- 简单的java实验,涉及到 类继承以及接口问题,方法体的重写(区别于重载)
package test ; abstract class Animal { abstract void cry(); abstract String getAnimalName(); } class ...
- 【LeetCode】27. Remove Element (2 solutions)
Remove Element Given an array and a value, remove all instances of that value in place and return th ...
- linux常见面试题及答案
1. 在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i字节来标识. 4. 全部磁盘块由四 ...
- Oracle截取字符串函数和查找字符串函数,连接运算符||
参考资料:Oracle截取字符串和查找字符串 oracle自定义函数学习和连接运算符(||) oracle 截取字符(substr),检索字符位置(instr) case when then else ...
- Android开发之Button事件实现方法的总结
下面介绍Button事件实现的两种方法 main.xml <?xml version="1.0" encoding="utf-8"?> <Li ...
- linux服务器的Gzip文件压缩方法[转]
一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992 ...
- hello oc
printf("Hello C\n"); //OC可以采用C语言的输出方式 printf("The number is %d\n",100);//%d 输出数字 ...