Ajax实践

在了解ajax之前,我们先粗略的了解一下http协议

HTTP协议

http事务

  • 一个完整的http请求是怎样的呢?
    1. 浏览器端会向服务器端发送一个包含命令和url的http请求报文
    2. 服务器端接收到请求,会进行一系列的计算,向浏览器返回一个包含事务结果的http响应报文

请求报文格式

格式
  • 第一部分
    • get:http方法
    • music.com主机地址
    • http/1.1http版本
  • 第二部分
    • Accept:浏览器接收的媒体类型
    • Accept-Encoding:浏览器接收的媒体类型的编码方式
    • Accept-Language浏览器端接收的语言方式
    • Cache-Control:缓存策略
    • Cookie:发送cookie值
    • User- Agent浏览器的版本
  • Get方法请求体为空

响应报文格式

方法 描述 是否包含主体
GET 从服务器获取一份文档
POST 向服务器发送需要处理的数据
PUT 将请求的主体部分存储在服务器上
DELETE 从服务器删除一份文档

响应格式

常用HTTP方法

方法 描述 是否包含主体
GET 从服务器获取一份文档
POST 向服务器发送需要处理的数据
PUT 将请求的主体部分存储在服务器上
DELETE 从服务器删除一份文档

URL构成

url

常见http状态码

状态码

ajax 是什么?有什么作用?

  • Ajax(Asynchronous JavaScript and Xml)
    • 能够向服务器请求额外的数据而无需卸载整个页面,会带来良好的用户体验
    • Ajax是一种技术的泛称,可以和后端交换数据,不用刷新页面

优点:

  • 更新数据而不需要刷新页面: 它能在不刷新整个页面的前提下与服务器通信维护数据,由于ajax是按照需求请求数据,避免发送那些没有改变的数据。
  • 异步通信: 它与服务器使用异步的方式通信,不会打断用户的操作(卡死页面)。
  • 前后端负载平衡: 可以将后端服务器的一些工作转移给客户端,利用客户端限制的能力来处理,减轻了服务器的负担。
  • 数据与呈现分离: 利于分工,降低前后耦合。

缺点:

  • 浏览器历史记录的遗失: 在使用AJAX对页面进行改变后,由于并没有刷新页面,没有改变页面的访问历史,当用户想要回到上一个状态时,无法使用浏览器提供的后退。
  • AJAX的安全问题: AJAX的出现就像建立起了一直通服务器的另一条通道,容易遭受到一些攻击。
一个ajax调用示例

ajax API

  • open开启一个请求
xhr.open('method',url[,async = true])

参数:
method:  //  GET/POST/DELETE/HEAD...
url:  // 我要请求的资源相对当前文档的路径
默认为true异步求情  :  //false同步
  • setRequestHeader(非必须)
xhr.setRequestHeader(header,value)
参数:
header:  //Content-type
  • send正式向服务端发请求
xhr.send([data = null])

我们注意到前面的url都是相对当前文档的相对路径,是受ajax的同源策略影响的

  • 什么是同源策略呢?

两个页面拥有相同的协议(protocol),端口(port),主机(host),那么这两个页面你属于同一个源(origin)

  • 不是同一个地址,我们就需要跨域资源访问
    • 跨域后面再说

可参考:跨域Frame代理


前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?

  1. 前后端联调是一种 真实业务数据和 本地mock数据之间来回切换以达到前后端分离架构下的不同开发速度时数据交换的一种方式方法,需要注意
  • 接口是get还是post
  • 接口的名字
  • 参数是什么?我发给后端的参数
  • 我要的是什么?后端发送给我,服务器?端口?方法?请求数据的一些限制?
  1. mock数据
  • 使用 nodejs 搭建服务器
  • anywhere
  • server-mock


    mock数据

点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?

//弄一个状态锁
var AjaxLock = false;
//事件触发下面代码
// ******start*****
if (!AjaxLock){
    AjaxLock = true;
    xhr.onreadystatechange = function(){
        if( xhr.readyState == 4) {
            //do sth
            AjaxLock = false; 
            //当接受完毕请求数据后将锁打开
        }
    }
    //ajax配置
    xhr.send();
} else {
    return;
}

题目4:实现加载更多的功能,效果范例415后端在本地使用server-mock来模拟数据

加载更多

代码预览,需要开启mock-server数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 1. ajax 是什么?有什么作用? Ajax(['eidʒæks])是Asynchronous JavaScri...
    晓风残月1994阅读 366评论 0 0
  • 1- 关于 ajax 及其作用 Ajax是Asynchronous JavaScript and XML的缩写。...
    osborne阅读 526评论 0 0
  • 题目1: ajax 是什么?有什么作用? ajax是一种技术方案,但并不是一种新技术。它依赖的是现有的CSS/HT...
    萧雪圣阅读 283评论 0 0
  • 今天儿子休息,本来打算出去玩的,只好在家呆着啦,今天我回来的早,带儿子去逛超市,最近喜欢上了喝咖啡!在我开导教育...
    aiyuner阅读 225评论 0 0