Ajax

Ajax

  • Ajax是Asynchronous JavaScript and XML的缩写,这一技术能够向服务器请求额外的数据而无需卸载整个页面,会带来良好的用户体验。传统的HTTP请求流程大概是这样的:

    • 浏览器向服务器发送请求
    • 服务器根据浏览器传来数据生成response
    • 服务器把response返回给浏览器
    • 浏览器刷新整个页面显示最新数据
  • AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求)从服务器获取数据:这里的异步是指脱离当前浏览器页面的请求、加载等单独执行,这意味着可以在不重新加载整个网页的情况下,通过JavaScript发送请求、接受服务器传来的数据,然后操作DOM将新数据对网页的某部分进行更新,使用Ajax最直观的感受是向服务器获取新数据不需要刷新页面等待了

XMLHttpRequest对象

  • Ajax的核心是JavaScript对象XMLHttpRequest,这个对象为向服务器发送请求和解析服务器响应提供了流畅的接口。XMLHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
  • Ajax通信和
  • 对象方法:
    • open(method, url, async):规定请求的类型(get,post),URL以及是否一步处理请求
    • send(string): 将请求发送到服务器,string仅用于POST请求
  • open方法:
    • open方法中的URL是相对于当前页面的路径,也可以使用绝对路径
    • 调用open方法不会真正发送请求,而是初始化一个请求准备发送,发送是由send来完成的
    • 只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因报错(同源策略)
  • 请求发往服务器,服务器根据请求生成响应(response),传回给XMLHttpRequest对象,在收到响应后响应数据会填充到XMLHttpRequest对象的属性:
    • responseText:作为响应主体被返回的文本
    • responseXML:如果响应内容的类型是”text/xml”或”application/xml”,这个属性将保存包含着相应数据的XML文档
    • status:响应的HTTP状态(200, 404, 500等)
    • statusText:HTTP状态说明
  • XMLHttpRequest的其他属性
    • readyState:表示请求/响应过程中的当前活动阶段
      • 0:请求未初始化
      • 1:服务器连接已建立
      • 2:请求已接收
      • 3:请求处理中
      • 4:请求已完成,且响应就绪
    • onreadystatechange:每当readyState值改变的时候都会触发一次onreadystatechange事件
    • 注意: 必须在open方法之前指定onreadstatechange事件处理程序
    • 可以在接受想赢之前调用abort方法取消异步请求
var xhr =new XMLHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
        setContainer('Original Ajax: ' + xhr.responseText);
    }
}
xhr.open('get', 'ajax.aspx?action=getTime', true);
xhr.send();

HTTP Header

  • 每个HTTP请求都会带有Header信息,XMLHttpRequest在默认情况下,发送HTTP请求还会发送下列头部信息:

    • Accept:浏览器能够处理的内容类型
    • Accept-Charset:浏览器能够处理的字符集
    • Accept-Encoding:浏览器能够处理的压缩编码
    • Accept-Language:浏览器当前设置的语言
    • Connection:浏览器与服务器的连接类型
    • Cookie:当前页面的cookie
    • Referer:发送请求的页面的URI
  • 可以使用setRequestHeader方法设置自定义的请求Header信息,这个方法接受两个参数:

    • 头部字段的名称
    • 头部字段的值
    • 注意:要想成功发送头部信息,必须在 调用open方法之后,调用send方法 之前调用setRequestHeader方法
  • 可以在服务器端接收自定义Header然后做响应操作。同时在服务器端也可以向浏览器发送额外的数据,在没有自定义信息的情况下我们可以得到默认response header,response header包含以下信息:

    • Date:响应时间
    • Server:服务器类型
    • Very:验证Encoding类型
    • X-Power-By:语言

XMLHttpRequest常用方法和属性:

  • open()
  • send()
  • xhr.responseText:作为响应主体被返回的文本,主要就是对它的操作,来获取所需(格式)的数据
  • xhr.status
  • xhr.readState
  • xhr.readystatechange = function(){}
  • xhr.setRequestHeader(头部字段名称,字段对应的值):自定义请求头部信息
  • xhr.getResponseHeader(头部字段名称):获取相应头部信息
  • xhr.getAllResponseHeaers():获取包含所有头部信息的长字符串
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容