网络编程
位置:首页>> 网络编程>> XML编程>> 使用 XML HTTP Request 对象[翻译](3)

使用 XML HTTP Request 对象[翻译](3)

作者:子乌 来源:子乌的叶子 发布时间:2007-11-07 21:11:00 

标签:XML,XMLHTTP,ajax

一个URL是否存在?

另一个简单用途是判断URL是否存在,在HTTP中,HEAD和GET请求会返回集中状态代码,200代表成功,404代表失败,还有一些代表别的含义。查看HTTP状态代码获取详细的解释。对象使用属性来告诉你这个状态。


xmlhttp.open("HEAD", "/faq/index.html",true);
 xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
   if (xmlhttp.status==200) alert("URL 存在!")
    else if (xmlhttp.status==404) alert("URL 不存在!")
     else alert("状态是 "+xmlhttp.status)
  }
 }
 xmlhttp.send(null)


无刷新调用服务端脚本

在HTML中,表单是一种调用服务端脚本的方法,它们会强制页面刷新,而这对用户来说通常并不是非常的友好。使用Http Request,你能够在不刷新页面的前提下调用脚本,并且在XML HTTP Request对象不可用的时候还能退而使用表单。


<%
 a=+(Request.QueryString('a')+'')
 b=+(Request.QueryString('b')+'')
 if (isNaN(a) || isNaN(b)) {a='';b='';total='' }
  else {
   total=a+b
  }
 acc=Request.ServerVariables('HTTP_ACCEPT')+''
 if (acc.indexOf('message/x-jl-formresult')!=-1) {
  Response.Write(total)
 } else {
%>
<script src="xmlhttp.js" type="text/javascript"></script>
<script>
 function calc() {
  frm=document.forms[0]
  url="add.1?a="+frm.elements['a'].value+"&b="+frm.elements['b'].value
  xmlhttp.open("GET",url,true);
  xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4) {
    document.forms[0].elements['total'].value=xmlhttp.responseText
   }
  }
 xmlhttp.setRequestHeader('Accept','message/x-jl-formresult')
 xmlhttp.send()
 return false
}
</script>
<form action="add.1" method="get" onsubmit="return calc()">
<input type=text name=a value="<%=a%>"> + <input type=text name=b value="<%=b%>">
 = <input type=text name=total value="<%=total%>">
<input type=submit value="Calculate">
</form>
<%
}
%>


上面的示例使用了asp的jscript作为服务端语言,HTTP ACCEPT报头被用来告诉服务端需要发送回什么样的响应--完整的页面或者只是结果。这个HTTP ACCEPT报头用来告诉服务端客户端会接受什么样的mime-types,通常它会是一些类似 text/html的内容。这里我们告诉它我们只接受message/x-jl-formresult,所以服务器知道它是我们的客户端(或者其他知道message/x-jl-formresult的客户端)提出的请求。

另一个判断返回内容的方法是通过你发送给服务器的数据的类型推断,你也可以简单将表单提交给xmlhttp request的url变换一下。无论你怎么作,保留对可能存在的不支持xmlhttp request的浏览器的向下兼容是很明智的。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com