Ajax 的用法
admin
2023-03-22 15:41:11
0

1、什么是 Ajax?

  Ajax,英文名 Asynchronous JavaScript and XML,也就是异步的 JavaScript 和 XML。它不是一门新的语言,而是一种使用现有标准的新方法,可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,而且不需要任何浏览器插件,只需要用户允许 JavaScript 在浏览器上执行。

 

2、Ajax 的工作原理

Ajax 的用法

由上图我们可以看到,浏览器首先 创建一个 XMLHttpRequest 对象,然后将这个对象发送给服务器;服务器响应并封装一些数据回传给浏览器;浏览器接收到服务器的响应数据,根据数据做出相应的操作,比如更新页面内容等操作。

 

3、如何使用 Ajax?

①、创建 XMLHttpRequest 对象

②、编写状态响应函数

③、调用 open() 方法

④、发送请求 send()

 下面我们通过一个简单的例子来模拟 通过 Ajax 来更新页面上的内容

第一步:首先新建一个 AjaxTest.html 文件

123456789101112        Title    //这里引用了 AjaxTest.js 文件  //定义点击事件 Ajax()

  页面显示效果如下:

Ajax 的用法

第二步:新建一个 formInfo.json 文件,里面存放将要更新的内容

1234{  "name":"ys",  "age":24}

第三步:新建一个 AjaxTest.js 文件,编写 Ajax 代码

  

1234567891011121314151617181920212223242526272829303132333435function Ajax(){    var xhr = null;    if (window.XMLHttpRequest) {        //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码        xhr=new XMLHttpRequest();    }else{        // IE6, IE5 浏览器执行代码        xhr=new ActiveXObject("Microsoft.XMLHTTP");    }    xhr.onreadystatechange = function(){        if (xhr.readyState==0 && xhr.status==200)        {            alert("请求未初始化");        }        if (xhr.readyState==1 && xhr.status==200)        {            alert("服务器连接已建立");        }        if (xhr.readyState==2 && xhr.status==200)        {            alert("请求已接收");        }        if (xhr.readyState==3 && xhr.status==200)        {            alert("请求处理中");        }        if (xhr.readyState==4 && xhr.status==200)        {            alert("请求已完成,且响应已就绪");            document.getElementById("mydiv").innerHTML=xhr.responseText;        }    }    xhr.open("GET","../json/fromInfo.json",true);    xhr.send();}

  当我们点击按钮,界面会更新为:

Ajax 的用法

 

4、对 Ajax 各个步骤的解析

①、创建 XMLHttpRequest 对象

通常来说,所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。所以创建 XMLHttpRequest 对象可以直接这样

1var xhr=new XMLHttpRequest();

但是老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象,并不支持 XMLHttpRequest 对象。所以我们这样创建:

1var xhr=new ActiveXObject("Microsoft.XMLHTTP");

那么综合起来,创建 XMLHttpRequest  对象的方法为:

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

 该对象的属性为:

Ajax 的用法

上面的例子我们可以看到 XMLHttpRequest 对象为:

Ajax 的用法

 

  

②、编写状态响应函数

状态响应函数也就是 onreadystatechange 事件

 Ajax 的用法

常见的 status 响应状态码:

Ajax 的用法

 

③、调用 open() 方法

Ajax 的用法

 open(string method,string url,boolean asynch,String username,string password)

指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;
method:表示http请求方法,一般使用"GET","POST".
url:表示请求的服务器的地址;
asynch:表示是否采用异步方法,true为异步,false为同步;
后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

 

④、发送请求 send()

 send(content)

向服务器发出请求,如果采用异步方式,该方法会立即返回。content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

 

 

 

实际开发中,有很多开源的库已经给我们封装好了,我们直接用就行了。

1、jQuery 的 Ajax 请求:

1234567891011121314151617181920212223242526$.ajax({        type : "post",  //请求方式        url : "../json/fromInfo.json",  //请求路径        data : "",      //传输到服务器的数据        cache : false,  //是否有缓存        async : false,  //同步和异步,false 表示异步        dataType : "json",  //预期的服务器响应数据类型        beforeSend:function(xhr){            alert(xhr);            alert('发送前');        },        success:function(data,textStatus,jqXHR){            alert(data);  //json 文件中的数据,是一个 object 对象            alert(textStatus); //值为 success,表示成功状态码            alert(jqXHR);  //这第三个参数封装响应的一些信息            document.getElementById("mydiv").innerHTML=jqXHR.responseText;        },        error:function(xhr,textStatus){            alert('错误');            alert(xhr);            alert(textStatus);        },        complete:function(){            alert('结束');        }    });

  对上面相应参数的解析:

Ajax 的用法

Ajax 的用法

 

2、jQuery 的 get 请求

$.get(url,data,success(response,status,xhr),dataType)

说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,dataType 为服务器返回数据类型。第四个参数 dataType,如果不写,默认返回字符串

12345678$.get(        "../json/fromInfo.json",        "",        function(response,status,xhr){            alert(xhr.responseText);        },        "json"    );

 Ajax 的用法

 

 

3、jQuery 的 post 请求

 $.post(url,data,success(response,status,xhr),dataType)

 参数和 get 请求一样


相关内容

热门资讯

今日重大通报“微信链接麻将真的... 家人们!今天小编来为大家解答微信链接麻将透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
【今日要闻】“人民棋牌开挂神器... 【今日要闻】“人民棋牌开挂神器?”(太坑了果然有挂)您好,人民棋牌这个游戏其实有挂的,确实是有挂的,...
今日重磅消息“免安装麻将机控器... 网上科普关于“免安装麻将机控器好牌有没有挂”话题很是火热,小编也是针对免安装麻将机控器好牌作*弊开挂...
重磅消息“新蜜瓜大厅拼三张怎么... 重磅消息“新蜜瓜大厅拼三张怎么装挂?”(太坑了果然有挂)您好,新蜜瓜大厅拼三张这个游戏其实有挂的,确...
终于明白“新蛮王炸/金/花辅助... 终于明白“新蛮王炸/金/花辅助器?”(必胜开挂神器)您好,新蛮王炸/金/花这个游戏其实有挂的,确实是...
商务部回应TikTok将在美成... 商务部新闻发言人何咏前12月25日在回答关于TikTok将在美成立合资公司的有关提问时说,中国政府希...
【第一消息】“白金岛字牌集有挂... 您好:白金岛字牌集这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
今日重磅消息“新奇玩乐辅助器?... 有 亲,根据资深记者爆料新奇玩乐是可以开挂的,确实有挂(咨询软件无需打开...
手机套餐升易降难,重重套路“绑... “升套餐时一个电话、一条短信就能搞定,想降下来就困难重重。”据人民日报报道,尽管手机通信“提速降费”...
重磅消息“十三十三水到底是不是... 有 亲,根据资深记者爆料十三十三水是可以开挂的,确实有挂(咨询软件无需打...