前端工程师前端工程师必知必会共15页Word文档下载推荐.docx

上传人:b****8 文档编号:22286857 上传时间:2023-02-03 格式:DOCX 页数:9 大小:23.03KB
下载 相关 举报
前端工程师前端工程师必知必会共15页Word文档下载推荐.docx_第1页
第1页 / 共9页
前端工程师前端工程师必知必会共15页Word文档下载推荐.docx_第2页
第2页 / 共9页
前端工程师前端工程师必知必会共15页Word文档下载推荐.docx_第3页
第3页 / 共9页
前端工程师前端工程师必知必会共15页Word文档下载推荐.docx_第4页
第4页 / 共9页
前端工程师前端工程师必知必会共15页Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

前端工程师前端工程师必知必会共15页Word文档下载推荐.docx

《前端工程师前端工程师必知必会共15页Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《前端工程师前端工程师必知必会共15页Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

前端工程师前端工程师必知必会共15页Word文档下载推荐.docx

2082591.doc(2/13)

上海腾一研发部内部技术文档

Js代码1.2.3.4.5.}if(window.xmlhttprequest){//mozilla,safari,...http_request=newxmlhttprequest();

}elseif(window.activexobject){//iehttp_request=newactivexobject("

microsoft.xmlhttp"

);

(上例对代码做了一定简化,这是为了解释如何创建xmlhttp类实例.实际的代码实例可参阅本篇步骤3.)如果服务器的响应没有xmlmime-typeheader,某些mozilla浏览器可能无法正常工作.为了解决这个问题,如果服务器响应的header不是text/xml,可以调用其它方法修改该header.

Js代码1.2.http_request=newxmlhttprequest();

http_request.overridemimetype('

text/xml'

接下来要决定当收到服务器的响应后,需要做什么.这需要告诉http请求对象用哪一个javascript函数处理这个响应.可以将对象的onreadystatechange属性设置为要使用的javascript的函数名,如下所示:

Js代码1.http_request.onreadystatechange=nameofthefunction;

注意:

在函数名后没有括号,也无需传递参数.另外还有一种方法,可以在扉页(fly)中定义函数及其对响应要采取的行为,如下所示:

Js代码1.2.3.};

http_request.onreadystatechange=function(){//dothething

在定义了如何处理响应后,就要发送请求了.可以调用http请求类的open()和send()方法,如下所示:

Js代码1.2.http_request.open('

get'

'

http:

//example.org/some.file'

true);

http_request.send(null);

2082591.doc(3/13)

open()的第一个参数是http请求方式–get,post,head或任何服务器所支持的您想调用的方式.按照http规范,该参数要大写;

否则,某些浏览器(如firefox)可能无法处理请求.有关http请求方法的详细信息可参考http:

//w3.org/protocols/rfc2616/rfc2616-sec9.htmlw3cspecs第二个参数是请求页面的url.由于自身安全特性的限制,该页面不能为第三方域名的页面.同时一定要保证在所有的页面中都使用准确的域名,否则调用open()会得到"

permissiondenied"

的错误提示.一个常见的错误是访问站点时使用domain.tld,而当请求页面时,却使用domain.tld.第三个参数设置请求是否为异步模式.如果是true,javascript函数将继续执行,而不等待服务器响应.这就是"

ajax"

中的"

a"

.如果第一个参数是"

post"

send()方法的参数可以是任何想送给服务器的数据.这时数据要以字符串的形式送给服务器,如下所示:

name=value&

anothername=othervalue&

so=on

收到!

步骤2–"

收到---处理服务器的响应收到当发送请求时,要提供指定处理响应的jvascript函数名.

我们来看看这个函数的功能是什么.首先函数会检查请求的状态.如果状态值是4,就意味着一个完整的服务器响应已经收到了,您将可以处理该响应.

Js代码1.2.3.4.5.}if(http_request.readystate==4){//everythingisgood,theresponseisreceived}else{//stillnotready

readystate的取值如下:

0(未初始化)1(正在装载)2(装载完毕)3(交互中)4(完成)

2082591.doc(4/13)

接着,函数会检查http服务器响应的状态值.完整的状态取值可参见w3csite.我们着重看值为200ok的响应.

Js代码1.2.3.4.5.6.7.}if(http_request.status==200){

//perfect!

}else{//therewasaproblemwiththerequest,//forexampletheresponsemaybea404(notfound)//or500(internalservererror)responsecodes

在检查完请求的状态值和响应的http状态值后,您就可以处理从服务器得到的数据了.有两种方式可以得到这些数据:

http_request.responsetext–以文本字符串的方式返回服务器的响应http_request.responsexml–以xmldocument对象方式返回响应.处理xmldocument对象可以用javascriptdom函数

3–"

万事俱备-简单实例万事俱备!

万事俱备我们现在将整个过程完整地做一次,发送一个简单的http请求.我们用javascript请求一个html文件,test.html,文件的文本内容为"

i'

matest."

.然后我们"

alert()"

test.html文件的内容.

Html代码1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.}}elseif(window.activexobject){//ietry{http_request=newactivexobject("

mxml2.xmlhttp"

}catch(e){try{if(window.xmlhttprequest){//mozilla,safari,...http_request=newxmlhttprequest();

if(http_request.overridemimetype){http_request.overridemimetype('

http_request=false;

<

scripttype="

text/javascript"

language="

javascript"

>

varhttp_request=false;

functionmakerequest(url){

2082591.doc(5/13)

17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.<

/span>

}<

/script>

spanstyle="

cursor:

pointer;

text-decoration:

underline"

>

makearequest}}if(http_request.readystate==4){if(http_request.status==200){alert(http_request.responsetext);

}else{alert('

therewasaproblemwiththerequest.'

functionalertcontents(){}}http_request.onreadystatechange=alertcontents;

http_request.open('

url,true);

if(!

http_request){alert('

givingup:

(cannotcreateanxmlhttpinstance'

returnfalse;

}}http_request=newactivexobject("

}catch(e){}

本例中:

用户点击浏览器上的"

请求"

链接;

接着函数makerequest()将被调用.其参数–html文件test.html在同一目录下;

这样就发起了一个请求.onreadystatechange的执行结果会被传送给alertcontents();

alertcontents()将检查服务器的响应是否成功地收到,如果是,就会"

test.html文件的内容.步骤4–"

x-文档---处理xml响应文档"

文档在前面的例子中,当服务器对http请求的响应被收到后,我们会调用请求对象的

2082591.doc(6/13)

reponsetext属性.该属性包含了test.html文件的内容.现在我们来试试responsexml属性.首先,我们新建一个有效的xml文件,后面我们将使用这个文件.该文件(test.xml)源代码如下所示:

Xml代码1.2.3.4.<

?

xmlversion="

1.0"

?

root>

i'

matest.<

/root>

在该脚本中,我们只需修改请求部分,接着在alertcontents()中,我们将alert()的代码

Js代码1.alert(http_request.responsetext);

换成:

Js代码1.2.3.varxmldoc=http_request.responsexml;

varroot_node=xmldoc.getelementsbytagname('

root'

).item(0);

alert(root_node.firstchild.data);

这里,我们使用了responsexml提供的xmldocument对象并用dom方法获取存于xml文件中的内容.

3.属性与方法举例:

属性与方法举例:

属性与方法举例

Html代码1.2.3.4.5.6.7.8.9.10.11.12.13.}elseif(window.XMLHTTPRequest){xmlhttp=newXMLHTTPRequest();

html>

head>

title>

XMLHTTPRequest对象的说明DEMO<

/title>

scriptlanguage="

type="

!

-varxmlhttp;

//创建一个XMLHTTPRequest对象functioncreateXMLHTTPRequext(){if(window.ActiveXObject){xmlhttp=newActiveXObject('

Microsoft.XMLHTTP'

2082591.doc(7/13)

14.15.16.17.18.19.20.21.22.//方法:

open//创建一个新的http请求,并指定此请求的方法,URL以及验证信息//语法:

oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword);

23.24.25.26.27.28.29.//参数//bstrMethod//http方法,例如:

POST,GET,PUT及PROPFIND.大小写不敏感.//bstrUrl//请求的URL地址,可以为绝对地址也可以为相对地址.//varAsync[可选]//布尔型,指定此请求是否为异步方式,默认为true.如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.函数,45.46.47.48.49.50.51.52.//方法:

send//发送请求到http服务器并接收回应//语法:

oXMLHttpRequest.send(varBody);

//参数:

varBody(欲通过此请求发送的数据.)//当数据接收完毕后(readystate==4)此页面上的一个按钮将被激活//备注:

此属性只写,为W3C文档对象模型的扩展.xmlhttp.onreadystatechange=HandleStateChange;

//属性:

onreadystatechange//onreadystatechange:

指定当readyState属性改变时的事件处理句柄//语法:

oXMLHttpRequest.onreadystatechange=funcMyHandler;

//如下的例子演示当XMLHTTPRequest对象的readyState属性改变时调用HandleStateChange//备注:

调用此方法后,可以调用send方法向服务器发送数据.xmlhttp.Open("

get"

"

//localhost/example.htm"

false);

//varbook=xmlhttp.responseXML.selectSingleNode("

//book[@id='

bk101'

]"

//alert(book.xml);

//bstrUser[可选]//如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口.//bstrPassword[可选]//验证信息中的密码部分,如果用户名为空,则此值将被忽略.}functionPostOrder(xmldoc){createXMLHTTPRequext();

}

2082591.doc(8/13)

53.//备注:

此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync==False,此方法将会等待请求完成或者超时时才会返回,如果bAsync==True,此方法将立即返回.54.//Thismethodtakesoneoptionalparameter,whichistherequestBodytouse.TheacceptableVARIANTinputtypesareBSTR,SAFEARRAYofUI1(unsignedbytes),IDispatchtoanXMLDocumentObjectModel(DOM)object,andIStream*.Youcanuseonlychunkedencoding(forsending)whensendingIStream*inputtypes.ThecomponentautomaticallysetstheContent-LengthheaderforallbutIStream*inputtypes.55.//如果发送的数据为BSTR,则回应被编码为utf-8,必须在适当位置设置一个包含charset的文档类型头.56.//IftheinputtypeisaSAFEARRAYofUI1,theresponseissentasiswithoutadditionalencoding.ThecallermustsetaContent-Typeheaderwiththeappropriatecontenttype.57.//如果发送的数据为XMLDOMobject,则回应将被编码为在xml文档中声明的编码,如果在xml文档中没有声明编码,则使用默认的UTF-8.58.//IftheinputtypeisanIStream*,theresponseissentasiswithoutadditionalencoding.ThecallermustsetaContent-Typeheaderwiththeappropriatecontenttype.59.60.61.62.63.64.65.66.67.68.69.话70.//xmlhttp.getResponseHeader("

Content-Type"

将返回字符串"

text/xml"

.可以使用getAllResponseHeaders方法获取完整的http头信息.71.alert(xmlhttp.getResponseHeader("

));

//输出http头中的Content-Type列:

当前web服务器的版本及名称.72.73.74.75.76.77.78.79.80.document.frmTest.myButton.disabled=true;

//方法:

abort//取消当前请求//语法:

oXMLHttpRequest.abort();

//备注:

调用此方法后,当前请求返回UNINITIALIZED状态.//xmlhttp.abort();

getAllResponseHeaders//获取响应的所有http头//语法:

strValue=oXMLHttpRequest.getAllResponseHeaders();

每个http头名称和值用冒号分割,并以\r\n结束.当send方法完成后才可调用该方法.alert(xmlhttp.getAllResponseHeaders());

getResponseHeader//从响应信息中获取指定的http头//语法:

strValue=oXMLHttpRequest.getResponseHeader(bstrHeader);

当send方法成功后才可调用该方法.如果服务器返回的文档类型为"

则这句xmlhttp.Send(xmldoc);

2082591.doc(9/13)

81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.}functionHandleStateChange(){//属性:

readyState//返回XMLHTTP请求的当前状态//语法:

lValue=oXMLHttpRequest.readyState;

变量,此属性只读,状态用长度为4的整型表示.定义如下:

//0(未初始化)对象已建立,但是尚未初始化(尚未调用open方法)//1(初始化)对象已建立,尚未调用send方法//2(发送数据)send方法已调用,但是当前的状态及http头未知//3(数据传送中)已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,99.据100.101.102.103.104.105.106.制数据.107.108.109.110.111.112.113.114.115.116.11

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1