Ajax简介和基本用法


Ajax简介

什么是Ajax

  • Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
  • Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
  • AJAX 不是新的编程语言,而是一种使用现有标准的新方法
  • Ajax 是一种用于创建快速动态网页的技术。
  • AJAX 通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。
  • AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

(传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个页面。
有很多使用 AJAX 的应用程序案例:Google Maps、Gmail、Youtube 和 Facebook。)

AJAX 工作原理

这里写图片描述

Ajax包括:

AJAX是基于现有的Internet标准,并且联合使用它们:
- CSS(给数据定义样式)
- XML (作为转换数据的格式)
- 使用文档对象模型(Document Object Model)作动态显示和交互
- 使用XML和XSLT做数据交互和操作
- 使用XMLHttpRequest(异步的与服务器交换数据)

利用AJAX可以做:

  • 注册时,输入用户名自动检测用户是否已经存在。
  • 登陆时,提示用户名密码错误
  • 删除数据行时,将行ID发送到后台,后台在数据库中删除,数据库删除成功后,在页面DOM中将数据行也删除。

Ajax基本用法

一、创建Ajax

var ajax=new XMLHttpRequest();//创建AJAX

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

var ajax=new ActiveXObject("Microsoft.XMLHTTP");//适用于IE5 和 IE6

为了应对所有的现代浏览器,包括 IE5 和 IE6,进行兼容性判断

var ajax;
    if(window.XMLHttpRequest){
        ajax=new XMLHttpRequest(); //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
    }else{
        ajax=new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5 浏览器执行代码
    }

二、 向服务器发送请求请求

open(method,url,async)

连接服务器,规定请求的类型、URL 以及是否异步处理请求。

  • method :请求的类型;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)

GET 、POST的选择

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:

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

send(string)

将请求发送到服务器。

  • string:仅用于 POST 请求
ajax.send();//因为我此时用GET请求所以参数为空

三、服务器响应

responseText

– 获得字符串形式的响应数据。

responseXML

– 获得 XML 形式的响应数据。


四、onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。

XMLHttpRequest 对象属性:

属性 描述
onreadystatechange 存储函数(或函数的名称)在每次 readyState 属性变化时被自动调用。
readyState 存有 XMLHttpRequest 的状态。0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪
responseText 返回作为一个字符串的响应数据。
responseXML 返回作为 XML 数据响应数据。
status 返回Http状态码——200:表示成功; 202:表示请求被接受, 但尚未成功; 400:错误的请求; 404:文件未找到; 500:内部服务器错误
statusText 200: “OK” ;404: 未找到页面

onreadystatechange属性存储函数,每当 readyState 改变时,就会触发 onreadystatechange 事件。

ajax.onreadystatechange=function(){//验证onreadystatechange事件
        if(ajax.readyState==4){
            if(ajax.status==200){
                alert("成功"+ajax.responseText)
            }
        }else{
            if(funFailed){
                alert("失败"+ajax.status);
            }
        }
    }

五、完整版

    var ajax=new XMLHttpRequest();//创建AJAX

    ajax.open("GET",url,true);//连接服务器

    ajax.send();//发送请求

    ajax.onreadystatechange=function(){//验证onreadystatechange事件

        if(ajax.readyState==4){

            if(ajax.status==200){

                alert("成功"+ajax.responseText)//成功连接的话返回获取的字符串
            }

        }else{

                alert("失败"+ajax.status); //未成功连接的话返回Http状态码        

        }

    }

附: status 和statusText 属性对照表

原文
XMLHttpRequest 对象 status 和statusText 属性对照表

status statusText 说明
0** - 未被始化
1** - 请求收到,继续处理
100 Continue 客户必须继续发出请求
101 Switching protocols 客户要求服务器根据请求转换HTTP协议版本
2** - 操作成功收到,分析、接受
200 OK 交易成功
201 Created 提示知道新文件的URL
202 Accepted 接受和处理、但处理未完成
203 Non-Authoritative Information 返回信息不确定或不完整
204 No Content 请求收到,但返回信息为空
205 Reset Content 服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206 Partial Content 服务器已经完成了部分用户的GET请求
3** - 完成此请求必须进一步处理
300 Multiple Choices 请求的资源可在多处得到
301 Moved Permanently 删除请求数据
302 Found 在其他地址发现了请求数据
303 See Other 建议客户访问其他URL或访问方式
304 Not Modified 客户端已经执行了GET,但文件未变化
305 Use Proxy 请求的资源必须从服务器指定的地址得到
306 前一版本HTTP中使用的代码,现行版本中不再使用
307 Temporary Redirect 申明请求的资源临时性删除
4** - 请求包含一个错误语法或不能完成
400 Bad Request 错误请求,如语法错误
401 Unauthorized 请求授权失败
402 Payment Required 保留有效ChargeTo头响应
403 Forbidden 请求不允许(由于服务器上文件或目录的权限设置导致资源不可用)
404 Not Found 没有发现文件、查询或URl(没有找到指定的资源)
405 Method Not Allowed 用户在Request-Line字段定义的方法不允许
406 Not Acceptable 根据用户发送的Accept拖,请求资源不可访问
407 Proxy Authentication Required 类似401,用户必须首先在代理服务器上得到授权
408 Request Timeout 客户端没有在用户指定的饿时间内完成请求
409 Conflict 对当前资源状态,请求不能完成
410 Gone 服务器上不再有此资源且无进一步的参考地址
411 Length Required 服务器拒绝用户定义的Content-Length属性请求
412 Precondition Failed 一个或多个请求头字段在当前请求中错误
413 Request Entity Too Large 请求的资源大于服务器允许的大小
414 Request-URI Too Long 请求的资源URL长于服务器允许的长度
415 Unsupported Media Type 请求资源不支持请求项目格式
416 Requested Range Not Suitable 请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包
417 Expectation Failed 服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
5** - 服务器执行一个完全有效请求失败
500 Internal Server Error 服务器产生内部错误
501 Not Implemented 服务器不支持请求的函数
502 Bad Gateway 服务器暂时不可用,有时是为了防止发生系统过载
503 Service Unavailable 服务器过载或暂停维修
504 Gateway Timeout 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505 HTTP Version Not Supported 服务器不支持或拒绝支请求头中指定的HTTP版本
12029 an unknown error occurred while processing the request on the server. the status code returned from the server was : 12029 原因:网络不通. 刷新一下就知道了

实例–注册判断用户是否存在,两次密码输入是否相同(在我的下一篇文章):
这里写图片描述

注:今天刚刚学习的Ajax,为了更加熟悉Ajax,我又看了一些网上的教程,这些是我对刚刚学习的东西进行了总结、整理,如果有发现错误或者不完善的地方,希望可以给我指出来。
参考:http://www.runoob.com/ajax/ajax-intro.html

猜你喜欢

转载自blog.csdn.net/weixin_42952665/article/details/82352384