Ajax Hacks-hack9 深入了解HTTP Response

HTTP响应头是描述性的信息,符合HTTP 1.1 协议规范,web服务器向请求端发送精确的页面或数据。如果你已经使用XMLHttpRequest对象编过程(在本章的前面讨论过),你应该知道request.status属性是从服务器返回的响应状态码。它是用来检测HTTP响应状态的重要值。

装态值包括200(请求成功)、404(请求的URL不存在,或页面不存在)500(服务器内部错误)。

然而,你还想看到更多的其他优选请求的响应头信息,例如与响应相关的web服务器软件类型(服务器请求头),或者响应的content类型(Content-Type)。本hack请求用户输入的一个URL。当用户点击输入框以外的部分时,浏览器会显示该URL的响应头信息。作为一个ajax应用,页面是不会出现刷新情况的。

请求对象方法只返回可用的响应头的一个子集,包括Content-Type, Date, Server,和Content-Length.

html代码如下:

“http://www.w3.org/TR/1999/REC-html401C19991224/strict.dtd”>

Find out the HTTP response headers when you “GET” a Web page

JavaScript:void%200>

Enter a URL:

::press tab when finished editing the

field::

Figure 1-13 shows the page in the Safari browser.

Figure 1-13. Scoping the response

程序预先使用http://www.parkerriver.com/s/sender?name=guest来填充该text。

当用户输入URL以后点击Tab键,或点击输入框外的部分时,输入框的onblur事件被激发。事件处理函数是getAllHeaders,该函数传递用户输入的RUL进入request对象。request对象向此URL发送请求,并向web页面返回的响应头。

下面的代码是文件hack7.js。显示代码以后,将解释一下如何显示服务器响应头信息。其余的可以参考本章其他hack。

var request;

var urlFragment=“http://www.parkerriver.com/s/sender?name=guest”;

function getAllHeaders(url){

httpRequest(“GET”,url,true);

}

//function for XMLHttpRequest onreadystatechange event handler function handleResponse( ){ try{ if(request.readyState == 4){ if(request.status == 200){ /* All headers received as a single string */ var headers = request.getAllResponseHeaders( ); var div = document.getElementById(“msgDisplay”; div.className=“header”; div.innerHTML=”

"+headers+"

“; } else { //request.status is 503 if the application isn‘t available; //500 if the application has a bug alert(request.status); alert(“A problem occurred with communicating between ”+ “the XMLHttpRequest object and the server program.”; } }//end outer if } catch (err) { alert(“It does not appear that the server is ”+ “available for this application. Please”+ “ try again very soon. //nError: ”+err.message);

}

}

/* Initialize a request object that is already constructed */

function initReq(reqType,url,bool){

try{

/* Specify the function that will handle the HTTP response */

request.onreadystatechange=handleResponse;

request.open(reqType,url,bool);

request.send(null);

} catch (errv) {

alert(

“The application cannot contact the server at the moment. ”+

“Please try again in a few seconds.” );

}

}

/* Wrapper function for constructing a request object.

Parameters:

reqType: The HTTP request type, such as GET or POST.

url: The URL of the server program.

asynch: Whether to send the request asynchronously or not. */

function httpRequest(reqType,url,asynch){

//Mozilla-based browsers

if(window.XMLHttpRequest){

request = new XMLHttpRequest( );

} else if (window.ActiveXObject){

request=new ActiveXObject(“Msxml2.XMLHTTP”;

if (! request){

request=new ActiveXObject(“Microsoft.XMLHTTP”;

}

}

//the request could still be null if neither ActiveXObject

//initialization succeeded

if(request){

initReq(reqType,url,asynch);

} else {

alert(“Your browser does not permit the use of all ”+

“of this application‘s features!”;

}

}

令人感兴趣的部分是handleResponse函数。该函数调用request对象的getAllResponseHeaders方法,该方法返回所有的可用的响应头信息,预格式为string。开发者更喜欢这些值作为JSON格式返回,而不是作为一个单一的字符串返回。

为取得一个头信息,也可以使用request.getResponseHeader方法。例如request.getResponseHeader(“Content-Type”)可以得到响应头的Content类型:

接下来代码将取得div元素,并在其中显示头信息:

if(request.status == 200){ /* All headers received as a single string */ var headers = request.getAllResponseHeaders( ); var div = document.getElementById(“msgDisplay”; div.className=“header”; div.innerHTML=”

"+headers+"

“; }…

为能向信息显示提供css格式,代码设置了div的className属性,这个类已经预先定义了,代码如下:

div.header{ border: thin solid black; padding: 10%;

font-size: 0.9em; background-color: yellow}

span.message { font-size: 0.8em; }

以这样的方式,代码会动态地将一个div连向一个特定的CSS类,这个类是单独定义的。这种策略帮助DOM编程者描述区分。最后div的innerHTML属性被设置进返回头值里边。

欢迎大家阅读《Ajax Hacks-hack9 深入了解HTTP Respon…_jquery》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:Ajax Hacks-hack9 深入了解HTTP Respon_jquery

ajax hack,Ajax Hacks-hack9 深入了解HTTP Respon_jquery相关推荐

  1. 怎么中断一个ajax请求,ajax、fetch、axios如何中断请求?

    先来说一说"中断请求"的实际场景,当页面有多个tab页签时,每次切换页签都会去请求数据,频繁的切换就会去请求很多次,比如A页签切换到B页签,A页签请求完全是不必要的,这时候可以在切 ...

  2. ajax入门实例代码,AJAX、AJAX实例及AJAX源代码

    AJAX.AJAX实例及AJAX源代码 作者:佚名 来源:CNZZ 2008-1-4 AJAX介绍 AJAX 关键词: JavaScript脚本和可扩展标记语言(XML) WEB浏览器技术 开放式WE ...

  3. 六十八、完成Vue项目推荐和周末游组件,并使用Ajax发起ajax请求

    @Author:Runsen 2020/10/27. 周二.今天又是奋斗的一天. 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  4. $.ajax 发送请求,JavaScript之Ajax-2 Ajax(使用Ajax发送get请求、使用Ajax发送post请求)

    一.使用Ajax发送get请求 发送异步请求的步骤 - 获取Ajax对象:获取 XMLHttpRequest对象实例 - 创建请求:调用XMLHTTPRequest对象的open方法 - 设置回调函数 ...

  5. 一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)

    第 1 章:原生 AJAX 1.1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML. 通过 AJAX 可以在浏览器中向服 ...

  6. ajax hacking,Ajax Hacking

    Ajax Hacking 更新时间:2006年11月06日 00:00:00   作者: 由此Ajax攻击可见一斑,然而这还仅仅是个开始.7月份百度开通了百度空间,虽然没有指明是应用web2.0技术, ...

  7. ajax=1,ajax专栏1

    一.什么是ajax?有什么作用? ajax中文翻译为:异步的js和xml.用于网页向服务器发送请求(可支持同步和异步2种方式),接收服务器响应后的处理数据. 注:同步,网页发送请求后,锁定当前网页(不 ...

  8. AJAX教程@ajax

    文章目录 1.AJAX 1.什么是AJAX 2.AJAX核心对象 - 异步对象(XMLHttpRequest) 1.什么是XMLHttpRequest [简称为 xhr] 2.创建 异步对象 (xhr ...

  9. 了解ajax,ajax的优化有哪些

    -20-01-20 ------------------------------学习打卡-------------------------------------------------------- ...

最新文章

  1. JAVA进阶----ThreadPoolExecutor机制(转)
  2. 线段树合并复杂度证明
  3. ajax中迭代是什么意思,Ajax 局部刷新迭代器的内容
  4. [react] 类组件和函数式组件有什么区别?
  5. 为什么计算机控制系统采用软,微型计算机控制技术一二章复习资料及部分答案...
  6. quartz配置参数说明
  7. 基础数据类型的坑和集合及深浅copy
  8. 电商后台管理系统项目总结(一)
  9. Axure RP 8--成绩管理页面原型图
  10. 客户端禁止 Cookie,Session怎么实现
  11. wow.js动画插件
  12. 网络流24题 最小路径覆盖(DCOJ8002)
  13. mac mysql mysqldb_在 Mac 中安装 MySQLdb (Python mysql )
  14. react-router嵌套路由页面无法显示
  15. 百度OCR识别图片文字,解决image format error错误
  16. php 生成微信小程序码(可携带参数) 永久有效,数量暂无限制
  17. PW4053,USB C口5V输入,三节串联锂电池充电IC,12.6V1A充电板
  18. 全球及中国带棱镜的全站仪行业发展动态及十四五运营前景咨询报告2022-2027年
  19. QQ第三方授权登录+阿里云短信服务
  20. 工具分享之截图软件Snipaste

热门文章

  1. win10系统更新后文件丢失的解决办法
  2. 普罗米修斯 mysql监控_Promethus(普罗米修斯)监控Mysql数据库
  3. 一个区块链美女小白的蜕变——我庆幸自己能生活在这个高速时代!
  4. Mac版Endnote 20导入中文参考格式Chinese Std GBT7714 (numeric)
  5. 怎么上传云班课的计算机作业,云班课如何提交课后作业 作业提交教程
  6. pc端页面右侧滑动样式修改
  7. php获得当前时间差,PHP获取当前时间差8小时的问题
  8. 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt
  9. 因涉政内容导致域名被封禁
  10. 「TCG 规范解读」初识嵌入式和工业工作组