仓酷云

标题: ASP网页编程之分享:XML HTTP Request的属性和办法简... [打印本页]

作者: 莫相离    时间: 2015-1-16 22:06
标题: ASP网页编程之分享:XML HTTP Request的属性和办法简...
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;因为如今在公司卖力制造尺度的静态页面,为了加强客户体验,以是常常要做些AJAX效果,也学你也和我一样在,进修AJAX。而计划AJAX时利用的一个主要的手艺(工具)就是XMLHTTPRequest工具了。这里海啸把我进修XMLHTTPRequest工具的一点材料拿出来跟人人一同分享。文中的材料都是海啸在进修时在网上搜集的,假如您开过,那就再加深下印象吧!
1、XMLHTTPRequest工具甚么是?
最通用的界说为:XmlHttp是一套能够在Javascript、VbScript、Jscript等剧本言语中经由过程http协定传送或从吸收XML及其他数据的一套API。XmlHttp最年夜的用途是能够更新网页的部份内容而不必要革新全部页面。(这个功效恰是AJAX的一年夜特性之一)
来自MSDN的注释:XmlHttp供应客户端同http服务器通信的协定。客户端能够经由过程XmlHttp工具(MSXML2.XMLHTTP.3.0)向http服务器发送哀求并利用微软XML文档工具模子Microsoft?XMLDocumentObjectModel(DOM)处置回应。
这里说些题外话,实在这个器材很早就呈现了,只是之前扫瞄器的撑持不敷,只要IE中才撑持,以是年夜多半的WEB程序员都没有怎样用他,可是如今情形产生了很年夜地改动,Mozilla和Safari把它接纳为现实上的尺度,支流的扫瞄器都入手下手撑持XMLHTTPRequest工具了。可是这里必要重点申明的是XMLHTTPRequest今朝还不是一个W3C的尺度,以是在分歧的扫瞄器上体现也稍有些区分。
2、创立XMLHTTPRequest工具
对了,说到区分,我们这里来看看怎样来声明(利用)它,在利用XMLHTTPRequest工具发送哀求和处置呼应之前,我们必需要用javascript创立一个XMLHTTPRequest工具。(IE把XMLHTTPRequest完成为一个ActiveX工具,其他的扫瞄器[如Firefox/Safari/Opear]则把它完成为一个当地的javascript工具)。上面我们就来看看详细怎样使用javascript来创立它吧:
以下为援用的内容:
<scriptlanguage="javascript"type="text/javascript">
<!--
varxmlhttp;
//创立XMLHTTPRequest工具
functioncreateXMLHTTPRequest(){
if(window.ActiveXObject){//判别是不是撑持ActiveX控件
xmlhttp=newActiveObject("Microsoft.XMLHTTP");//经由过程实例化ActiveXObject的一个新实例来创立XMLHTTPRequest工具
}
elseif(window.XMLHTTPRequest){//判别是不是把XMLHTTPRequest完成为一个当地javascript工具
xmlhttp=newXMLHTTPRequest();//创立XMLHTTPRequest的一个实例(当地javascript工具)
}
}
//-->
</script>
3、属性和办法
因为器材太多如今先用个页面来枚举出说有的办法和属性,今后再来具体举例(次要是自己也在进修中)。
以下为援用的内容:
<html>
<head>
<title>XMLHTTPRequest工具的申明DEMO</title>
<scriptlanguage="javascript"type="text/javascript">
<!--
varxmlhttp;
//创立一个XMLHTTPRequest工具
functioncreateXMLHTTPRequext(){
if(window.ActiveXObject){
xmlhttp=newActiveXObject(Microsoft.XMLHTTP);
}
elseif(window.XMLHTTPRequest){
xmlhttp=newXMLHTTPRequest();
}
}
functionPostOrder(xmldoc)
{
createXMLHTTPRequext();

//办法:open
//创立一个新的http哀求,并指定此哀求的办法、URL和考证信息
//语法:oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword);
//参数
//bstrMethod
//http办法,比方:POST、GET、PUT及PROPFIND。巨细写不敏感。
//bstrUrl
//哀求的URL地点,能够为相对地点也能够为绝对地点。
//varAsync[可选]
//布尔型,指定此哀求是不是为异步体例,默许为true。假如为真,当形态改动时会挪用onreadystatechange属性指定的回调函数。
//bstrUser[可选]
//假如服务器必要考证,此处指定用户名,假如未指定,当服务器必要考证时,会弹出考证窗口。
//bstrPassword[可选]
//考证信息中的暗码部分,假如用户名为空,则此值将被疏忽。

//备注:挪用此办法后,能够挪用send办法向服务器发送数据。
xmlhttp.Open("get","http://localhost/example.htm",false);
//varbook=xmlhttp.responseXML.selectSingleNode("//book[@id=bk101]");
//alert(book.xml);

//属性:onreadystatechange
//onreadystatechange:指定当readyState属性改动时的事务处置句柄
//语法:oXMLHttpRequest.onreadystatechange=funcMyHandler;
//以下的例子演示当XMLHTTPRequest工具的readyState属性改动时挪用HandleStateChange函数,
//当数据吸收终了后(readystate==4)此页面上的一个按钮将被激活
//备注:此属性只写,为W3C文档工具模子的扩大.
xmlhttp.onreadystatechange=HandleStateChange;

//办法:send
//发送哀求到http服务器并吸收回应
//语法:oXMLHttpRequest.send(varBody);
//参数:varBody(欲经由过程此哀求发送的数据。)
//备注:此办法的同步或异步体例取决于open办法中的bAsync参数,假如bAsync==False,此办法将会守候哀求完成大概超不时才会前往,假如bAsync==True,此办法将当即前往。
//Thismethodtakesoneoptionalparameter,whichistherequestBodytouse.TheacceptableVARIANTinputtypesareBSTR,SAFEARRAYofUI1(unsignedbytes),IDispatchtoanXMLDocumentObjectModel(DOM)object,andIStream*.Youcanuseonlychunkedencoding(forsending)whensendingIStream*inputtypes.ThecomponentautomaticallysetstheContent-LengthheaderforallbutIStream*inputtypes.
//假如发送的数据为BSTR,则回应被编码为utf-8,必需在得当地位设置一个包括charset的文档范例头。
//IftheinputtypeisaSAFEARRAYofUI1,theresponseissentasiswithoutadditionalencoding.ThecallermustsetaContent-Typeheaderwiththeappropriatecontenttype.
//假如发送的数据为XMLDOMobject,则回应将被编码为在xml文档中声明的编码,假如在xml文档中没有声明编码,则利用默许的UTF-8。
//IftheinputtypeisanIStream*,theresponseissentasiswithoutadditionalencoding.ThecallermustsetaContent-Typeheaderwiththeappropriatecontenttype.
xmlhttp.Send(xmldoc);

//办法:getAllResponseHeaders
//猎取呼应的一切http头
//语法:strValue=oXMLHttpRequest.getAllResponseHeaders();
//备注:每一个http头称号和值用冒号支解,并以
停止。当send办法完成后才可挪用该办法。
alert(xmlhttp.getAllResponseHeaders());
//办法:getResponseHeader
//从呼应信息中猎取指定的http头
//语法:strValue=oXMLHttpRequest.getResponseHeader(bstrHeader);
//备注:当send办法乐成后才可挪用该办法。假如服务器前往的文档范例为"text/xml",则这句话
//xmlhttp.getResponseHeader("Content-Type");将前往字符串"text/xml"。可使用getAllResponseHeaders办法猎取完全的http头信息。
alert(xmlhttp.getResponseHeader("Content-Type"));//输入http头中的Content-Type列:以后web服务器的版本及称号。


document.frmTest.myButton.disabled=true;
//办法:abort
//作废以后哀求
//语法:oXMLHttpRequest.abort();
//备注:挪用此办法后,以后哀求前往UNINITIALIZED形态。
//xmlhttp.abort();

//办法:setRequestHeader
//独自指定哀求的某个http头
//语法:oXMLHttpRequest.setRequestHeader(bstrHeader,bstrValue);
//参数:bstrHeader(字符串,头称号。)
//bstrValue(字符串,值。)
//备注:假如已存在已此称号定名的http头,则掩盖之。此办法必需在open办法后挪用。
//xmlhttp.setRequestHeader(bstrHeader,bstrValue);
}
functionHandleStateChange()
{
//属性:readyState
//前往XMLHTTP哀求确当前形态
//语法:lValue=oXMLHttpRequest.readyState;
//备注:变量,此属性只读,形态用长度为4的整型暗示.界说以下:
//0(未初始化)工具已创建,可是还没有初始化(还没有挪用open办法)
//1(初始化)工具已创建,还没有挪用send办法
//2(发送数据)send办法已挪用,可是以后的形态及http头未知
//3(数据传送中)已吸收部分数据,由于呼应及http头不全,这时候经由过程responseBody和responseText猎取部分数据会呈现毛病,
//4(完成)数据吸收终了,此时能够经由过程经由过程responseBody和responseText猎取完全的回应数据
if(xmlhttp.readyState==4){
document.frmTest.myButton.disabled=false;

//属性:responseBody
//前往某一格局的服务器呼应数据
//语法:strValue=oXMLHttpRequest.responseBody;
//备注:变量,此属性只读,以unsignedarray格局暗示间接从服务器前往的未经解码的二进制数据。
alert(xmlhttp.responseBody);

//属性:responseStream
//以AdoStream工具的情势前往呼应信息
//语法:strValue=oXMLHttpRequest.responseStream;
//备注:变量,此属性只读,以AdoStream工具的情势前往呼应信息。
alert(xmlhttp.responseStream);

//属性:responseText
//将呼应信息作为字符串前往
//语法:strValue=oXMLHttpRequest.responseText;
//备注:变量,此属性只读,将呼应信息作为字符串前往。XMLHTTP实验将呼应信息解码为Unicode字符串,
//XMLHTTP默许将呼应数据的编码定为UTF-8,假如服务器前往的数据带BOM(byte-ordermark),XMLHTTP可
//以解码任何UCS-2(bigorlittleendian)大概UCS-4数据。注重,假如服务器前往的是xml文档,此属
//性其实不处置xml文档中的编码声明。你必要利用responseXML来处置。
alert(xmlhttp.responseText);

//属性:responseXML
//将呼应信息格局化为XmlDocument工具并前往
//语法:varobjDispatch=oXMLHttpRequest.responseXML;
//备注:变量,此属性只读,将呼应信息格局化为XmlDocument工具并前往。假如呼应数据不是无效的XML文档,
//此属性自己不前往XMLDOMParseError,能够经由过程处置过的DOMDocument工具猎取毛病信息。
alert("Result="+xmlhttp.responseXML.xml);

//属性:status
//前往以后哀求的http形态码
//语法:lValue=oXMLHttpRequest.status;
//前往值:长整形尺度http形态码,界说以下:
//Number:Description
//100:Continue
//101:Switchingprotocols
//200:OK
//201:Created
//202:Accepted
//203:Non-AuthoritativeInformation
//204:NoContent
//205:ResetContent
//206:PartialContent
//300:MultipleChoices
//301:MovedPermanently
//302:Found
//303:SeeOther
//304:NotModified
//305:UseProxy
//307:TemporaryRedirect
//400:BadRequest
//401:Unauthorized
//402:PaymentRequired
//403:Forbidden
//404:NotFound
//405:MethodNotAllowed
//406:NotAcceptable
//407:ProxyAuthenticationRequired
//408:RequestTimeout
//409:Conflict
//410:Gone
//411:LengthRequired
//412:PreconditionFailed
//413:RequestEntityTooLarge
//414:Request-URITooLong
//415:UnsupportedMediaType
//416:RequestedRangeNotSuitable
//417:ExpectationFailed
//500:InternalServerError
//501:NotImplemented
//502:BadGateway
//503:ServiceUnavailable
//504:GatewayTimeout
//505:HTTPVersionNotSupported
//备注:长整形,此属性只读,前往以后哀求的http形态码,此属性仅当数据发送并吸收终了后才可猎取。
alert(xmlhttp.status);

//属性:statusText
//前往以后哀求的呼应行形态
//语法:strValue=oXMLHttpRequest.statusText;
//备注:字符串,此属性只读,以BSTR前往以后哀求的呼应行形态,此属性仅当数据发送并吸收终了后才可猎取。
alert(xmlhttp.statusText);
}
}
//-->
</script>
</head>
<body>
<formname="frmTest">
<inputname="myButton"type="button"value="ClickMe"onclick="PostOrder(http://localhost/example.htm);">
</form>
</body>
</html>



帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。
作者: 仓酷云    时间: 2015-1-18 05:59
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
作者: 小妖女    时间: 2015-1-21 12:41
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者: 爱飞    时间: 2015-1-30 18:31
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 小魔女    时间: 2015-2-6 14:54
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
作者: 老尸    时间: 2015-2-16 18:21
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 精灵巫婆    时间: 2015-3-5 08:49
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
作者: 若相依    时间: 2015-3-12 02:29
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 透明    时间: 2015-3-19 17:39
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2