复制代码 代码如下:
function CallBackObject()
{
this.XmlHttp = this.GetHttpObject();
}
CallBackObject.prototype.GetHttpObject = function() //动态为CallBackObject的原型添加了GetHttpObject共有方法
{
//第一步:创建XMLHttpRequest对象
//进行兼容性判断
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
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属性将引发一个异常。
相关推荐:
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
文章AI生成软件高效创作新纪元
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
SEO就是:让你的品牌脱颖而出,获得更多曝光与流量,梅岭关键词排名优化
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
AI助手不需要登陆-畅享便捷生活,随时随地高效工作,ai客服 对话
揭开“好的AI软件”背后的秘密:让生活和工作更智能的利器
SEO运营工作是什么,seo公司运营 ,720516AI
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
SEO收集:如何通过有效数据收集提升网站排名,鞍山商城网站建设报价
ChatGPT全球宕机:人工智能的崩塌与未来的挑战,中国ai和美国ai教父
SEO分类中内部优化的有:让你的网站脱颖而出!,by ai
AI文章比对技术:引领写作与内容审核的新革命,ai智能写作小说免费
seo需要什么部门,seo主要干什么 ,ai接入仪器
seo网络推广是什么,seo网络推广是什么意思 ,ai哪里注音
创作新时代:自动生成文章AI的魅力与未来
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
代哥SEO-让您的网站迅速登顶搜索引擎的秘密武器,济南关键词的排名优化
ChatGPT回答问题,网页无法线下滚动?解决方案轻松get!,谷歌AI铃声
ChatGPT不登录,如何畅享AI的智能服务?,手信ai
实用AI工具:提升效率、优化生活的科技利器
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
ChatGPT页面不自动显示最新消息:如何解决这一困扰,提升使用体验?,斑马ai幼儿百度云网盘
AI人工智能:改变未来的科技革命
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
ChatGPT3.5最新版:智能对话新纪元,带你进入AI的未来世界,ai苔藓生长
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
seo网站通过什么软件,网站seo软件哪个 ,战团ai
AI优化文章:如何利用人工智能提升写作效率和质量
SEO是什么意思?揭秘SEO的真正含义与重要性,公司推广网站询问d火18星来
丹东seo是什么怎么选,丹东spr ,黑发ai图
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
如何用AI写公众号文章?让创作更高效、更轻松
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
文章生成AI:让写作轻松高效的神奇工具
ChatGPT无服务:如何突破限制,未来人工智能的新可能,ai绘制装饰画
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
SEO外,如何提升网站整体营销效果?,文轩网络营销推广方案
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
ChatGPT破解版:让人工智能助力你的工作与生活,ai cos帽
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
ChatGPT:我目前无法查看或解析附件,您是否遇到过这样的困扰?,ai+燃烧
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜