iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >如何进行javascript对XMLHttpRequest异步请求的面向对象封装
  • 148
分享到

如何进行javascript对XMLHttpRequest异步请求的面向对象封装

2024-04-02 19:04:59 148人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关如何进行javascript对XMLHttpRequest异步请求的面向对象封装,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起

本篇文章给大家分享的是有关如何进行javascript对XMLHttpRequest异步请求的面向对象封装,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

 代码如下:


function CallBackObject()
{
this.XmlHttp = this.GetHttpObject();
}
CallBackObject.prototype.GetHttpObject = function() //动态为CallBackObject的原型添加了GetHttpObject共有方法
{
//第一步:创建XMLHttpRequest对象
//进行兼容性判断
var xmlhttp;

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
CallBackObject.prototype.DoCallBack = function(URL)
{
if( this.XmlHttp )
{
if( this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 )
{
var oThis = this;
//第二步:注册回调方法,当服务器处理结束返回数据以后利用回调方法实现局部的页面刷新数据
//这个回调方法实际上在每次XMLHttpRequest对象的readyState属性的值发生变化的时候都会被调用
this.XmlHttp.onreadystatechange = function() {
//根据XmlHttp.readyState返回值不同调用不同的方法。
oThis.ReadyStateChange();
};
//第三步:设置和服务器交互的相应参数
this.XmlHttp.open('POST', URL);
this.XmlHttp.setRequestHeader('Content-Type', 'application/x-www-fORM-urlencoded');
//第四步:设置向服务器发送的数据,启动和服务器端交互
this.XmlHttp.send(null);
}
}
}
CallBackObject.prototype.AbortCallBack = function()
{
if( this.XmlHttp )
this.XmlHttp.abort();
}
CallBackObject.prototype.ReadyStateChange = function() {
//第五步:判断和服务器交互是否完成,还要判断服务器端是否正确返回数据
//this.XmlHttp.readyState == 0初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
if (this.XmlHttp.readyState == 1) {
//open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
this.OnLoading();
}
else if (this.XmlHttp.readyState == 2) {
//Send() 方法已调用,HTTP 请求已发送到 WEB 服务器。未接收到响应。
this.OnLoaded();
}
else if (this.XmlHttp.readyState == 3) {
//Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
this.OnInteractive();
}
else if (this.XmlHttp.readyState == 4) {
//Loaded HTTP 响应已经完全接收。
if (this.XmlHttp.status == 0)
this.OnAbort();
else if (this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK")
this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
else
this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText);
}
}
CallBackObject.prototype.OnLoading = function()
{
// Loading
}
CallBackObject.prototype.OnLoaded = function()
{
// Loaded
}
CallBackObject.prototype.OnInteractive = function()
{
// Interactive
}
CallBackObject.prototype.OnComplete = function(responseText, responseXml)
{
// Complete
}
CallBackObject.prototype.OnAbort = function()
{
// Abort
}
CallBackObject.prototype.OnError = function(status, statusText)
{
// Error
}



调用方法如下:

复制代码 代码如下:


<script type="text/javascript">
function createRequest()
{
var name = escape(document.getElementById("name").value);
var cbo = new CallBackObject();
cbo.OnComplete = Cbo_Complete;
cbo.onError = Cbo_Error;
cbo.OnLoaded = OnLoading;
cbo.DoCallBack("ajaxTest.aspx?name=" + name);
}

function OnLoading() {
alert("OnLoading " );
}

function Cbo_Complete(responseText, responseXML)
{
alert("成功 "+responseText);
}

function Cbo_Error(status, statusText, responseText)
{
alert(responseText);
}
</script>


onreadystatechange事件
  无论readyState值何时发生改变,XMLHttpRequest对象都会激发一个readystatechange事件。其中,onreadystatechange属性接收一个EventListener值-向该方法指示无论readyState值何时发生改变,该对象都将激活。
  responseText属性
  这个responseText属性包含客户端接收到的HTTP响应的文本内容。当readyState值为0、1或2时,responseText包含一个空字符串。当readyState值为3(正在接收)时,响应中包含客户端还未完成的响应信息。当readyState为4(已加载)时,该responseText包含完整的响应信息。
  responseXML属性
  此responseXML属性用于当接收到完整的HTTP响应时(readyState为4)描述XML响应;此时,Content-Type头部指定MIME(媒体)类型为text/xml,application/xml或以+xml结尾。如果Content-Type头部并不包含这些媒体类型之一,那么responseXML的值为null。无论何时,只要readyState值不为4,那么该responseXML的值也为null。
  其实,这个responseXML属性值是一个文档接口类型的对象,用来描述被分析的文档。如果文档不能被分析(例如,如果文档不是良构的或不支持文档相应的字符编码),那么responseXML的值将为null。
  status属性
  这个status属性描述了HTTP状态代码,而且其类型为short。而且,仅当readyState值为3(正在接收中)或4(已加载)时,这个status属性才可用。当readyState的值小于3时试图存取status的值将引发一个异常。
  statusText属性
  这个statusText属性描述了HTTP状态代码文本;并且仅当readyState值为3或4才可用。当readyState为其它值时试图存取statusText属性将引发一个异常。

以上就是如何进行javascript对XMLHttpRequest异步请求的面向对象封装,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网VUE频道。

--结束END--

本文标题: 如何进行javascript对XMLHttpRequest异步请求的面向对象封装

本文链接: https://www.lsjlt.com/news/82795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行javascript对XMLHttpRequest异步请求的面向对象封装
    本篇文章给大家分享的是有关如何进行javascript对XMLHttpRequest异步请求的面向对象封装,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起...
    99+
    2024-04-02
  • PHP面向对象编程怎么对对象进行封装
    这篇文章主要讲解了“PHP面向对象编程怎么对对象进行封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP面向对象编程怎么对对象进行封装”吧!我们今天为大家介绍的是关于PHP面向对象编程的...
    99+
    2023-06-17
  • Java面向对象如何封装
    这篇文章主要讲解了“Java面向对象如何封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java面向对象如何封装”吧!1.认识封装简单的一句话就是套壳屏蔽细节。比如说一部手机,里面有电池,...
    99+
    2023-06-30
  • 如何使用JavaScript进行面向对象编程
    这篇文章主要为大家展示了“如何使用JavaScript进行面向对象编程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Jav...
    99+
    2024-04-02
  • jQuery封装的ajax如何对JSON数据进行请求处理
    小编给大家分享一下jQuery封装的ajax如何对JSON数据进行请求处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体实现...
    99+
    2024-04-02
  • 小程序中如何对网络请求进行二次封装
    这篇文章主要介绍了小程序中如何对网络请求进行二次封装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、背景在做微信小程序开发的时候难免会涉及到网络请求操作,小程序提供的原生网...
    99+
    2023-06-25
  • 如何在Java项目中利用post请求对Json进行封装
    如何在Java项目中利用post请求对Json进行封装?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。直接上代码String longUrl = ...
    99+
    2023-05-31
    json java post
  • JavaScript面向对象中的封装和继承怎么实现
    这篇“JavaScript面向对象中的封装和继承怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript面...
    99+
    2023-06-29
  • JavaScript面向对象中的封装和继承你了解吗
    目录1、面向对象1、封装2、原型对象3、继承总结1、面向对象 【三大显著特征】: 封装、继承、多态 1、封装 【解释】: 封装的本质就是将有关联的代码组合在一起。...
    99+
    2024-04-02
  • javascript面向对象三大特征之封装的示例分析
    这篇文章主要介绍了javascript面向对象三大特征之封装的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:封装封装(En...
    99+
    2024-04-02
  • 使用spring boot如何对异常请求进行处理
    这期内容当中小编将会给大家带来有关使用spring boot如何对异常请求进行处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。404异常处理:@Controllerpublic class&n...
    99+
    2023-05-31
    springboot 进行处理
  • JavaScript的面向对象和它的封装、继承、多态简单介绍
    这篇文章主要介绍“JavaScript的面向对象和它的封装、继承、多态简单介绍”,在日常操作中,相信很多人在JavaScript的面向对象和它的封装、继承、多态简单介绍问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • 如何进行java面向对象编程原理的分析
    这期内容当中小编将会给大家带来有关如何进行java面向对象编程原理的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java 的核心是面向对象编程。事实上,所有的Java 程序都是面向对象的,你别无选择...
    99+
    2023-06-03
  • 怎样进行python异常处理和面向对象编程的分析
    本篇文章给大家分享的是有关怎样进行python异常处理和面向对象编程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。    异常处理和面向对象...
    99+
    2023-06-04
  • 如何使用TS对axios的进行简单封装
    目录1.安装axios2.在合适路径下新建request.ts(名称可随意),例如可以在项目的src下创建utils文件夹创建request.ts3.导入axios并创建axios实...
    99+
    2022-11-13
    ts axios简单封装 ts封装axios
  • 如何进行Visual Basic对象的全面解析
    如何进行Visual Basic对象的全面解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Visual Basic还是比较常用的,于是我研究了一下Visual Basic...
    99+
    2023-06-17
  • 微信小程序中如何使用es6-promise.js封装请求与处理异步进程
    这篇文章主要介绍微信小程序中如何使用es6-promise.js封装请求与处理异步进程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序 es6-promise.js封装请求与...
    99+
    2024-04-02
  • Java中如何利用对象进行异步编程和并发处理?
    Java作为一种面向对象的编程语言,其强大的对象模型和线程机制使得其在异步编程和并发处理方面有着广泛的应用。在本文中,我们将介绍Java中利用对象进行异步编程和并发处理的方法,并且会给出相应的演示代码。 一、Java中的线程机制 Java中...
    99+
    2023-07-19
    对象 异步编程 并发
  • Python面向对象如何实现静态Web服务器处理客户端请求
    这篇文章主要讲解了“Python面向对象如何实现静态Web服务器处理客户端请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python面向对象如何实现静态Web服务器处理客户端请求”吧!概...
    99+
    2023-07-02
  • 如何进行Java中对象与表单的自动装配
    这期内容当中小编将会给大家带来有关如何进行Java中对象与表单的自动装配,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。时下很多 Web 框架 都实现了 Form 表单域与 Java 对象属性的自动装配功能...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作