XMLHTTPRequest

本文详细介绍了XMLHttpRequest技术,它是Ajax技术体系中的核心组成部分。文章解释了该技术的历史背景、不同浏览器中的实现方式及其与服务器通信的方法。同时,还讨论了如何设置回调函数、处理中文和国际化等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XMLHttpRequest是Ajax技术体系中最为核心的技术。缺少了它,Ajax的其余技术就无法成为一个有机的整体,将会土崩瓦解。
1999年上半年,M$在IE 5.0版中首次支持这种技术,他们是通过一个名为XMLHTTP的ActiveX对象来支持这种技术的。XMLHTTP对象使得页面中的脚本具有了在不刷新页面的情况下直接与服务器通信的能力。在此之前,能够做到这件事的唯一技术是通过IFrame,然而这超越了IFrame最初设计的目标,是一种存在潜在危险的hack做法。既然已经有很多不守规矩的开发者做出了越轨的行为,并且事实证明这样的开发方式确实非常有价值,也不会对系统安全造成什么破坏。于是M$就从善如流地发明了XMLHTTP对象,专门用来为浏览器中的脚本(在IE中就是JScript和VBScript)提供这样的服务器通信能力。
XMLHTTP对象大受欢迎,到了2000年它几乎已经成为了事实上的标准。Mozilla在这一年实现了具有相同接口的原生对象,称作XMLHttpRequest对象。后来Opera、Safari等浏览器也都相继实现了XMLHttpRequest对象。现在XMLHttpRequest是这个技术的正式名称。

Ajax所依赖的技术之中唯一一个尚未正式标准化的部分就是XMLHttpRequest,不过现在W3C已经将其列入了工作草案,应该很快就会成为正式的标准。
目前在IE 5.0、IE 6.0中创建XMLHttpRequest对象的语法如下:

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
而在非IE浏览器中创建XMLHttpRequest对象的语法如下:
var xmlhttp = new XMLHttpRequest();
M$在IE 7.0中将能够同时支持ActiveX对象和原生的XMLHttpRequest对象的创建方法,这是一个从善如流之举。因此,当IE 7.0普及之后,创建XMLHttpRequest对象将可以使用完全相同的语法。
XMLHttpRequest与服务器通信有两种方式:同步方式和异步方式。同步方式的调用非常简单,但是仅仅适用于数据量非常少的场合。如果数据量很大,会造成用户界面很长一段时间的停顿,这当然会损害Web应用的可用性。为了不影响可用性,Ajax应用中一般都使用异步方式来与服务器通信。用来设置同步和异步方式的是XMLHttpRequest对象的open方法的第3个参数,这个参数为true代表异步,为false代表同步。例如:

xmlhttp.open("GET", "http://www.blogjava.net/dlee/Rss.aspx", true);
如果是使用异步方式来进行通信,还需要设置一个回调函数,当数据返回时系统会调用这个回调函数。通过为XMLHttpRequest对象的onreadystatechange属性赋值来设置一个回调函数:
xmlhttp.onreadystatechange=function() {...};
此外,为了很好地支持中文和国际化,字符集一般都使用UTF-8,这可以通过调用XMLHttpRequest对象上的setRequestHeader方法来设置:

xmlhttp.setRequestHeader("Content-Type","text/xml;charset=utf-8");
如果服务器返回的是XML格式的数据,并且正确设置了HTTP头信息中的Content-Type,例如在Java中是这样设置的:

resp.setContentType("text/xml;charset=utf-8");
那么客户端的回调函数可以通过XMLHttpRequest对象的responseXML属性中获得XML DOM树形式的返回数据。
XMLHttpRequest其实是用语不当,它其实可以使用任何纯文本格式与服务器通信,而不限于XML格式。注意上面客户和服务器两端的Content-Type设置需要对应起来,如果它们都改成text/plain,那就是使用纯文本来进行通信,在回调函数中就需要访问XMLHttpRequest对象的responseText属性来获得纯文本形式的返回数据。

附:推荐的XMLHttpRequest相关书籍。

《Ajax实战》(Ajax in Action中文版),Dave Crane、Eric Pascarello、Darren James著。
《Ajax修炼之道》(Pragmatic Ajax中文版),Justin Gehtland、Ben Galbraith、Dion Almaer著。
《Ajax基础教程》(Foundations of Ajax中文版),Ryan Asleson、Nathaniel T. Schutta著。


当XMLHttpRequest对象把一个HTTP请求发送到服务器时将经历若干种状态:一直等待直到请求被处理;然后,它才接收一个响应。这样以来,脚本才正确响应各种状态-XMLHttpRequest对象暴露一个描述对象的当前状态的readyState属性:
0   描述一种"未初始化"状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。
1   描述一种"发送"状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。
2   描述一种"发送"状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。
3   描述一种"正在接收"状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。
4   描述一种"已加载"状态;此时,响应已经被完全接收。

System.xml.xmlDocument
它的作用是解析xml文档,将其转换为对象,使你可以在程序中对其操作
XmlDocument 成员请参见: http://msdn2.microsoft.com/zh-cn/library/system.xml.xmldocument_members(VS.80).aspx

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
内容概要:本文研究了企业人工智能(AI)发展对低技能就业的影响,基于2012-2022年中国A股上市公司的数据,发现AI显著减少了低技能员工的数量。研究还揭示了数字化转型和人力资本投资在这一过程中起到中介作用,表明AI不仅直接替代低技能岗位,还通过提升数字化能力和技能需求间接影响就业。异质性分析显示,这些负面影响在非国有企业和非高科技企业中尤为明显。此外,文章通过Python代码展示了详细的复现步骤,包括数据预处理、基准回归、中介效应分析、异质性分析及可视化。 适用人群:对AI与劳动力市场关系感兴趣的学者、政策制定者以及从事相关研究的数据分析师。 使用场景及目标:①理解AI对企业低技能就业的具体影响;②分析数字化转型和人力资本投资的中介作用;③探讨不同企业类型(如国有企业与非国有企业、高科技与非高科技企业)在AI影响下的异质性表现;④通过代码实现复现实证研究结果,提供实证分析的方法论参考。 其他说明:本文不仅提供了理论分析,还通过详细的代码实现帮助读者理解具体的操作步骤。研究结果对于制定相关政策以应对AI带来的就业挑战具有重要参考价值,同时为后续研究提供了数据处理和模型构建的范例。文章最后讨论了研究的局限性和未来可能的研究方向,强调了治理结构和财务特征在AI转型中的重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值