Hello大家好!我是Cathy海希,今天是我学习编程的第42天。

欢迎同时关注我的Youtube&B站?Cathy海希TV

每日斯多葛

你没必要做正确的事情。你可以变得自私,粗鲁,恶心,没远见,迂腐,邪恶,愚蠢(selfish, rude, awful, shortsighted, pedantic, evil, or stupid)人们难免会有想要作恶的冲动。

那我们如何维持自己思考的底线,坚持做正确的事情?因为我愿意,我乐意。

coding

8h

学习内容

【实战】用AJAX加载不同类型的文件

初识AJAX

什么是AJAX?简而言之,就是用JS发送请求,接收响应。简单吧?这就是方方老师的style?❤️

这一课的作业就是自己实际利用用AJAX加载不同类型的文件,我梳理了一下其中我都到底干了一些什么。我发现其实我扮演了三个角色

角色一:服务端

【服务端我】利用Node.js里的http模块来实现了响应的功能。值得注意的是,这边的服务器功能也可以用其它编程语言实现的,只是我们正巧用的是Node.js,其实还可以用PHP啊Python之类的。

我们的目的不是搞清Node.js,而是请求和响应的过程(Node.js只是帮助我们理解整个过程的工具而已)把代码中每一句干了什么搞清楚就可以了。方方老师还说了,新手不要过早开始学Node.js,JS都还没整明白呢? 之前每次修改代码之后,都要ctrl+C断开,然后执行node再次监听。这次引进了一个新工具叫node-dev,它可以实时帮忙刷新。

那我在扮演服务端的时候具体干了些什么呢?答:添加了各种路由。啥是路由?就是代码里的if else,也就是你请求什么,我就给你返回什么类型的文件

Node.js里面有一行代码是

response.write(fs.readFileSync(db/page2.json))//不一定是JSON,可能是其它文件类型

我感觉,这个文件也是由前端来写的,写好了放在数据库里,然后供服务端读取。

角色二:用户

【用户我】在浏览器里,实际通过鼠标按下各个按钮,期待得到某种结果,比如说页面样式有变化啊,得到新内容啊,翻到下一页啊,这是我在扮演使用浏览器的用户的角色。

角色三:前端

我不太确定这个角色是不是就叫前端哦,但是跟我在学习的内容高度符合,所以我猜测大概这些事情实际平时就是前端在做了。

情景:用户点击了一个“请求CSS”的按钮,那【前端我】要如何把用户期待的变化展现在他的浏览器上呢?

首先,我要用到一个我第一次接触的对象:XMLHttpRequest(XHR),它用于与服务器交互

AJAX的正式定义:使用 XMLHttpRequest 技术构建更复杂,动态的网页的编程实践

所以,用了XHR,就可以说我就是在AJAX了?

OK,回到上面设定的情景。之前说了,AJAX其实就是用JS发送请求,接收响应对吧?用户点击了浏览器上的某个按钮,我需要把这一行为构造成一个请求,发送给服务端,然后接收来自服务端的响应。这么想想,前端是不是连接用户(用户的浏览器)和服务端的桥梁的感觉?

用代码实现

用代码来实现上述的过程,简单来说分为以下四步:

const request = new XMLHttpRequest()//1. 创建一个XHR对象request.open(method,url)//2.初始化请求request.onreadystatechange = callback//3. 监听它的状态变化request.send()//4.发送请求
  • 第2步的.open(method,url)

其实后头还可以接收几个参数,但是我想特别谈谈第三个参数async。它的默认值是true,所以不用写。我感觉这个默认值true对于AJAX来说特别精华,因为,它表示要不要异步执行操作。如果改成false,那就跟AJAX里的A意味的异步相矛盾了。所以,我们一般只写前两个参数。

  • 第4步的.send()

用于发送 HTTP 请求。如果是异步请求(默认为异步请求),则此方法会在请求发送后立即返回;如果是同步请求,则此方法直到响应到达后才会返回。因为.open()的默认值是true,所以就是前面一种情况。

  • 第3步的onreadystatechange

当 readyState 的值改变的时候,相应的callback函数会被调用。(callback回调将会是明天日记的重点之一)

  1. 请求操作已完成(注意,意味着数据传输已经彻底完成或者失败)
  2. 并且请求成功的话,

我就从服务器那里拿到的响应(数据),根据其类型,用不同的类型进行解析,这样子浏览器就可以正确地加载到页面上。

最终用户就可以看到他通过浏览器发起的请求在页面上的反馈了。

mindset

现在在学习的这一章的名字叫【前后分离】,说实话其实我还不知道前端后端到底是如何分工的。如果我今天这个一人分饰三角的脑内小剧场大致正确的话,我觉得我开始那么一丝丝感觉了?不过我更加期望整个章节学习完成之后,有一个更加清晰的认识。

ajax response.write 执行失败_Day 42:一人分饰三角,初识AJAX相关推荐

  1. 这才叫积极脱单:为自己搭建相亲网站,一人分饰三十角

    By 超神经 内容提要:霓虹国一直脑洞很大,从动漫到游戏到各种整蛊综艺,总能让我们大跌眼镜,最近有一档节目中就出现了这么一个神奇的程序员小哥......他神奇就神奇在,为自己做了一个与众不同的相亲网站 ...

  2. JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax

    我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去, ...

  3. ajax回调函数有时成功有时失败,$.ajax数据传输成功却执行失败的回调函数

    这个问题迷惑了我好几天,都快要放弃了,功夫不负有心人,最终成功解决,下面写一下我的解决方法. 我传的数据是json类型的,执行失败的回调函数是因为从后台传过来的数据不是严格的json类型,所以才会不执 ...

  4. apscheduler 脚本执行失败_在脚本中使用 Bash 信号捕获 | Linux 中国

    无论你的脚本是否成功运行,信号捕获(trap)都能让它平稳结束. 来源:https://linux.cn/article-12715-1.html 作者:Seth Kenlon 译者:Hank Cho ...

  5. ajax请求成功和失败方法_创新需要反馈和失败的新方法

    ajax请求成功和失败方法 今天,"组织文化"令人不解,有充分的理由. 越来越多的领导者意识到,渗透并指导其组织的文化将决定他们是成功还是失败. 术语"组织文化" ...

  6. submit 不触发ajax,Ajax submitHandler没有执行

    我想通过ajax执行php文件,但它只是像正常一样通过表单加载并加载一个新页面.我在这里检查了大量的代码,仍然不会通过submitHandler和ajax执行.我已经检查主机提供商和ajax支持,我已 ...

  7. Pyinstaller 打包 torch 后执行失败 OSError: could not get source code

    1. 问题现象 系统环境 Python 3.6.9 torch 1.2.0 torchvision 0.4.0 Pyinstaller 4.5.1 Pyinstaller 打包 torch 后执行失败 ...

  8. mysql latid1_【转】mysql触发器的实战经验(触发器执行失败,sql会回滚吗) | 学步园...

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  9. apscheduler 脚本执行失败_Bash编程入门-3:数学运算及脚本

    说明:本文是对Vamei知乎文章<快速学习Bash>(https://zhuanlan.zhihu.com/p/32692644)一文的学习笔记,根据个人理解调整了内容顺序,补充了一些注释 ...

最新文章

  1. 干货丨2017年含金量最高的机器学习技能或知识有哪些?
  2. android线程及线程池
  3. WinForm开发,窗体显示和窗体传值相关知识总结
  4. 软件开发有多少种方式
  5. stdthread(6)并发lockGuard
  6. mysql中selectform_带有select标签的form表单,怎么提交到数据库啊 ?具体情况如下...
  7. linux 自动安装mysql数据库_linux系统下源码安装mysql5.6数据库
  8. 给考研迷茫中的你的一封信
  9. 多肉建议多久浇一次水?
  10. c语言printf、sprintf、vsprintf用法和区别
  11. 为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?
  12. 动软连接oraclet生成代码
  13. SVN中clean up的含义
  14. js实现显示系统时间的表盘
  15. i711370h和i710875h哪个好
  16. 隐私保护的数据挖掘综述
  17. python3多进程写Kafka异步线程调用接口
  18. [云原生]微服务架构是什么
  19. 70块钱打造简单家庭NAS
  20. CAN FD如何应用Vector诊断工具链?

热门文章

  1. 转型会员制,云集能否讲好电商下半场故事?
  2. fb驱动安装linux系统,drm 驱动是如何创建 fb device 的
  3. swoole client php,Swoole Client
  4. 攻防世界-Misc-something_in_image(秒懂!!)
  5. Python中包含义及其定义
  6. python queue 模块教程
  7. python基础教程:数值与字符串类型
  8. python 鸭子类型及三大特性
  9. 从Python代码到APP,你只需要一个小工具:GitHub已超3000星
  10. python拼写检查_Python 怎样写一个拼写检查器