使用Ajax的详细解析

这次给大家带来使用Ajax的详细解析,使用Ajax的注意事项有哪些,下面就是实战案例,一起来看一下。

Ajax 简介

Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式 。

通常不用刷新网页而与服务器通讯的方法:

Flash 框架

Frameset:如果使用一组框架构造了一个网页,可以只更新其中一个框架,而不必惊动整个页面

XMLHttpRequest:该对象是对 JavaScript 的一个扩展,可使网页与服务器进行通信。是创建 Ajax 应用的最佳选择。实际上通常把 Ajax 当成XMLHttpRequest(XHR) 对象的代名词

ajax基本使用

  ajax在我们的开发中是必须使用的一个技术,ajax即异步的javascript和xml但是现在我们通常使用json来完成数据的交互,ajax职责很单一就是数据的交互,发送数据接收数据是它的核心功能也是唯一的功能。

  ajax的实现依赖XMLHttpRequest,它的基本使用如下:

var xhr;window.XMLHttpRequest?xhr = new XMLHttpRequest():xhr = new ActiveXObject("Microsoft.XMLHTTP");xhr.open("get","demo!register.action?name=zt&age=23",true);xhr.send(null);xhr.onreadystatechange = function(){  if(xhr.readyState==4&&xhr.status==200){   alert(JSON.parse(xhr.responseText));  }}

登录后复制

  ajax的职责就是发送数据和接收数据我们基本使用流程为:

  1.获取一个XMLHttpRequest对象

  2.发送数据

  3.接收处理服务器返回的数据

  根据上面的步骤来实现一个异步请求数据的过程,首先获取一个xhr对象,在现代浏览器中我们可以直接通过实例化来获取一个xhr对象:var xhr = new XMLHttpRequest();在IE5、IE6中我们必须使用ActiveXObject来获取xhr对象:var xhr = new ActiveXObject(“Microsoft.XMLHTTP”)。

  此时我们已经得到了xhr对象接下来就是发送数据,通过xhr.open()方法来执行发送数据的方式,xhr.open()可以接收5个参数,我们经常使用的是前三个:

xhr.open(arg1,arg2,arg3)

登录后复制

  arg1表示请求数据的方式一般为get或者post

  arg2表示请求的服务器地址

  arg3表示本次请求是同步还是异步,ajax的突出特点就是异步所以我们一般都是使用异步的方式第三个参数设置为true(true表示进行异步请求false表示进行同步请求)

  xhr.open()方法只是准备一个请求,在调用open之后并不会和服务器进行通讯,而是在调用send()函数之后才会和服务器开始通讯,send()函数的参数将作为请求体发送到服务端。如果我们在open()函数中指定请求的方式为get通常我们将send()设置为xhr.send(null),如果我们希望通过请求体发送数据则要将open()函数的请求方式设置为post同时将我们需要发送的数据作为send()函数的参数:xhr.send(param),在调用send()函数之后,和服务器的通讯就开始了。

  对xhr的所有的设置都应该在send()函数之前设置好:

 xhr.open(...); xhr.setRequestHeader(...); xhr.overrideMimeType(...); xhr.onreadystatechange = function(){...}; xhr.send(...);

登录后复制

   但是由于xhr.onreadystatechange是一个事件,所以其放在send()之后也是可以执行的,出于易读性我们一般都将对xhr的设置放在send()函数之前。

  在send()之后可以通过xhr.readyState和xhr.status的来监测本次请求的状态,如果满足xhr.readyState==4&&xhr.status==200则本次请求成功:

在请求成功时我们可以通过xhr.responseText来获取服务器返回的数据,需要注意xhr.responseText是一个字符串。

使用Ajax的详细解析

ajax常用API

  上面的请求过程是一个最基本的请求过程xhr对象还有几个经常使用的方法分别为xhr.abort()、xhr.setRequestHeader()、xhr.overrideMimeType()。

  xhr.abort():终止一个请求,直接调用即可不需要设置参数

xhr.abort()

登录后复制

  xhr.setRequestHeader():设置发送的请求头:

xhr.setRequestHeader("Content-Type","application/json; charset=utf-8")

登录后复制

  第一个参数表示要设置的header,第二个参数表示要设置的header的值。xhr.setRequestHeader()必须在xhr.open()和xhr.send()之间,否则会抛出异常,同时xhr.setRequestHeader()的第一个参数是对大小写不敏感的只要我们字母写的对就能够设置成功,但是出于易读性我们要设置为正确的格式。

  xhr.overrideMimeType():重写响应头的Content-Type:

xhr.overrideMimeType('text/plain; charset=utf-8')

登录后复制

   xhr.overrideMimeType()同样要设置在xhr.send()之前。

JSON.parse()和JSON.stringify()使用

  JSON.parse()用来将一个对象转换为字符串,JSON.stringify()用来将一个字符串转换为对象。在利用ajax进行数据交互的过程中返回的数据多数的时候是一个JSON格式的字符串,如果服务器给我们返回了数据此时我们就需要利用JSON.parse()来解析返回的数据(xhr.responseText即为服务器返回的数据):

xhr.onreadystatechange = function(){  if(xhr.readyState==4&&xhr.status==200){ var data = JSON.parse(xhr.responseText);  }}

登录后复制

   在使用post方式发送数据的过程中,如果不是文件上传一般情况下传输的也是一个JSON数据,要想能够成功的发送到后台就需要用JSON.stringify()来将JSON对象来转换为一个字符串,同时Content-Type要设置为application/json:

var sendData = {name:"zt",age:23};...xhr.setRequestHeader("Content-Type","application/json; charset=utf-8");xhr.send(JSON.stringify(sendData));

登录后复制

  另外利用JSON.parse()和JSON.stringify()可以实现一个对象的深拷贝功能:

var sendData = {name:"zt",age:23};var copyData = JSON.parse(JSON.stringify(sendData));

登录后复制

$.ajax基本使用

   为了方便使用JQ为我们封装好了一个ajax来方便我们的使用:

$.ajax({ type:"post",//请求方式 url:"url",//请求地址 data:"...",//发送至服务端的数据 contentType:"...",//设置发送数据的类型如果data是一个json字符串这里要设置为application/json success:function(data){...},//请求成功的回调函数data可看做是服务器返回的数据 error:function(){...}//请求失败的回调函数 });

登录后复制

  或者:

$.ajax({ type:"post", url:"url", data:"...", contentType:"...", }) .done(function(data){...}) .fail(function(){...});

登录后复制

  回调函数中的data即为服务器返回的数据的一个代理,直接使用即可。

  为了简化我们的开发JQ提供了一些全局设置函数包括$.ajaxSetup()、$.()ajaxStart()、$().ajaxStop()、$().ajaxComplete()、$().ajaxError()、$().ajaxSuccess()、$().ajaxSend()。

  $.ajaxSetup()用来设置基本的参数例如:

$.ajaxSetup({ type:"post", contentType:"application/json; charset=utf-8" });

登录后复制

  我们在使用$.ajax时可以直接这样设置:

 $.ajax({ url:"", success:function(){...}, error:function(){...} })

登录后复制

  最终等价于:

 $.ajax({ type:"post", contentType:"application/json; charset=utf-8", url:"", success:function(){...}, error:function(){...} })

登录后复制

  $().ajaxStart()、$().ajaxStop()、$().ajaxComplete()、$().ajaxError()、$().ajaxSuccess()、$().ajaxSend()都是用来设置一些全局回调函数的。例如我们在提交数据时为了防止多次提交我们需要在发送请求时产生一个loading遮罩在数据发送完成后取消遮罩,如果在每一次ajax请求时我们都设置一次就会很麻烦,此时我们就可以用全局回调函数来简化我们的操作:

  利用全局事件在请求开始时产生一个遮罩在请求完成时取消遮罩:

$(document).ajaxStart(function(){ loadingMask.show(); }); $(document).ajaxComplete(function(){ loadingMask.hide(); });

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Ajax请求与Filter解析

ajax的参数过长无法提交如何处理

以上就是使用Ajax的详细解析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2775861.html

(0)
上一篇 2025年3月8日 14:34:40
下一篇 2025年2月25日 01:12:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Ajax请求时传输中文乱码怎么解决

    这次给大家带来Ajax请求时传输中文乱码怎么解决,解决Ajax请求时传输中文乱码的注意事项有哪些,下面就是实战案例,一起来看一下。 今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题。 如下代码: function Update…

    编程技术 2025年3月8日
    000
  • Ajax遍历jSon进行数据的修改和删除

    这次给大家带来ajax遍历json进行数据的修改和删除,ajax遍历json进行数据修改和删除的注意事项有哪些,下面就是实战案例,一起来看一下。 废话不多说了,直接给大家贴代码了,具体代码如下所示: $.ajax({url: “/busin…

    编程技术 2025年3月8日
    200
  • ajax的工作原理详解

    这次给大家带来ajax的工作原理详解,使用ajax的注意事项有哪些,下面就是实战案例,一起来看一下。 AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载…

    编程技术 2025年3月8日
    200
  • AJAX的队列请求如何实现(附代码)

    这次给大家带来AJAX的队列请求如何实现(附代码),AJAX队列请求实现的注意事项有哪些,下面就是实战案例,一起来看一下。 AJAX在使用的过程中会遇到一个问题,当用户短时间内执行了多个异步请求的时候,如果前一个请求没完成,将会被取消执行最…

    编程技术 2025年3月8日
    200
  • Ajax如何读取txt并对其内容进行分页展示

    这次给大家带来Ajax如何读取txt并对其内容进行分页展示,Ajax如何读取txt并对其内容进行分页展示的注意事项有哪些,下面就是实战案例,一起来看一下。 下文给大家分享了ajax读取txt并对txt内容进行分页显示的核心代码,废话不多说了…

    编程技术 2025年3月8日
    200
  • 深入理解ajax的XHR对象

    这次给大家带来深入理解ajax的XHR对象,使用ajax的XHR对象注意事项有哪些,下面就是实战案例,一起来看一下。 前面的话   ajax是asynchronous javascript and XML的简写,中文翻译是异步的javasc…

    编程技术 2025年3月8日
    200
  • Ajax页面的前进后退与刷新如何实现

    这次给大家带来Ajax页面的前进后退与刷新如何实现,实现Ajax页面的前进后退与刷新注意事项有哪些,下面就是实战案例,一起来看一下。 使用Ajax可以异步获取数据,可以更高效地渲染页面。 但也存在这一些问题: 再刷新页面,页面就会变成初始的…

    2025年3月8日
    200
  • Ajax通过XML异步提交实现二级联动

    这次给大家带来Ajax通过XML异步提交实现二级联动,Ajax通过XML异步提交实现二级联动的注意事项有哪些,下面就是实战案例,一起来看一下。 之前有写过是从JavaScript数组里获取省市信息来实现二级联动,但是似乎有很多需求是要从数据…

    编程技术 2025年3月8日
    200
  • MVC+bootstrap界面怎么进行ajax表单验证

    这次给大家带来MVC+bootstrap界面怎么进行ajax表单验证,MVC+bootstrap界面进行ajax表单验证的注意事项有哪些,下面就是实战案例,一起来看一下。 使用bootstrap后他由他自带的样式has-error,想要使用…

    2025年3月8日
    200
  • Ajax与JSON数据交互存储

    这次给大家带来Ajax与JSON数据交互存储,Ajax与JSON数据交互存储的注意事项有哪些,下面就是实战案例,一起来看一下。 数据存储是JavaScript的核心功能,这是一个在学习前期的一个容易让人迷惑的问题。它并不是那种像页面滑动、幻…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论