1、什么是Ajax和JSON,它们的优缺点

Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新

优点:可以实现异步通信效果,页面局部刷新,带来更好的用户体验

JSON是一种轻量级的数据交换格式,看着像对象,本质是字符串

优点:轻量级、易于人的阅读和编写,便于js解析,支持复合数据类型

2、ajax的交互流程有哪几步?

1)创建ajax对象

xhr = new XMLHttpRequest

2)规定请求地址

xhr.open(method,url,async)

3)等待服务器相应

xhr.onload

4)向服务器发送请求

xhr.send()

3、AJAX应用和传统Web应用有什么不同

在传统的Js中,如果想发送客户端信息到服务器,需要建立一个HTML表单然后GET或者POST数据到服务器端

用户需要点击提交按钮来发送数据信息,然后等待服务器响应请求,页面重新加载

使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互

4、XMLHttpRequest对象在IE和Firefox中创建方式有没有不同?

IE中通过new ActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到

使用jquery封装好的ajax,会避免这些问题
扩展:
IE内核为:trident;
Chrome内核为:blink(基于webkit,谷歌与Opera software共同开发);
Firefox内核为:gecko;
Safari内核为:webkit内核;
Opera内核为:blink (跟Chrome一样),之前为presto;

5、ajax如何解决浏览器缓存问题,有几种解决方案?

方案1)在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,“0”)

方案2)在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,“no-cache”)

方案3)在URL后面加上一个随机数: “fresh=” + Math.random();

方案4)在URL后面加上时间戳:“nowtime=” + new Date().getTime()

方案5)在jq ajax下,使用 $.ajaxSetup({cache:false}) 这样就不会保存缓存记录

6、简述ajax的优缺点

优点:

1)无刷新更新数据(在不刷新整个页面的情况下维持与服务器通信)

2)异步与服务器通信(使用异步的方式与服务器通信,不打断用户的操作)

3)前端和后端负载均衡(将一些后端的工作交给前端,减少服务器与宽度的负担)

4)界面和应用相分离(ajax将界面和应用分离也就是数据与呈现相分离)

缺点:

1)ajax不支持浏览器back按钮

2)安全问题 Aajax暴露了与服务器交互的细节

3)对搜索引擎的支持比较弱

4)破坏了Back与History后退按钮的正常行为等浏览器机制

7、阐述一下异步加载JS的几种方案(异步加载:浏览器在下载执行js的同时,还会继续进行后续页面的处理)

方案1)异步加载的方案: 动态插入 script 标签

方案2)通过 ajax 去获取 js 代码,然后通过 eval 执行

方案3)script 标签上添加 defer 或者 async 属性

方案4)创建并插入 iframe,让它异步执行 js

8、json字符串与对象如何相互转换

把JSON格式转成对象:JSON.parse()

把对象转成标准json:JSON.stringify()

使用eval能够把字符串尽量转成js运行的代码 eval(’(’ + jsonstr + ‘)’)

eval是不安全的(可能会注入不必要的东西),通过new Function(’’,‘return’+json)();可以解决该问题

9、介绍一下XMLHttpRequest对象,他有哪些常用方法和属性

XMLHttpRequest是ajax的核心,通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新

常用的方法:

open(get/post,url,是否异步)创建http请求

send()发送请求给服务器

setRequestHeader()设置头信息(使用post才会用到,get并不需要调用该方法)

常用的属性:

onreadystatechange 用于监听ajax的工作状态(readyState变化时会调用此方法)

readyState 用来存放XMLHttpRequest的状态

status 服务器返回的状态码

responseText 服务器返回的文本内容

10、说下readyState属性是干嘛的,都有哪几个状态

readyState属性用来存放XMLHttpRequest的状态,监听从0-4发生不同的变化

0:请求未初始化(此时还没有调用open)

1:服务器连接已建立,已经发送请求开始监听

2:请求已接收,已经收到服务器返回的内容

3:请求处理中,解析服务器响应内容

4:请求已完成,且响应就绪

11、jquery ajax怎么实现,你认为他有什么不足之处

$.ajax({
url:发送请求的地址,
data:数据的拼接,//发送到服务器的数据
type:‘get’,//请求方式,默认get请求
dataType:‘json’,//服务器返回的数据类型
async:true,//是否异步,默认true
cache:false,//设置为 false 将不会从浏览器缓存中加载请求信息
success:function(){},//请求成功后的回调函数
error: function(){}//请求失败时调用此函数
})

不足之处:

(1)针对MVC的编程,不符合现在前端MVVM的浪潮

(2)基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案

12、说一下同步和异步的区别

同步会阻塞,异步不会阻塞

同步:程序运行从上而下,浏览器必须把这个任务执行完毕,才能继续执行下一个任务

异步:程序运行从上而下,浏览器任务没有执行完,但是可以继续执行下一行代码

13、解释一下JavaScript的同源策略

同源策略是客户端脚本的安全度量标准,为了防止某个文档或脚本从多个不同源装载

同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性

所谓同源就是同域名、同协议、同端口,只有同源的地址才能相互通过ajax方式请求

14、如何解决跨域问题?

跨域的概念:协议、域名、端口都相同才同域,否则都是跨域

解决跨域问题:

1)使用JSONP(json+padding)把数据内填充起来

2)CORS方式(跨域资源共享),在后端上配置可跨域

3)服务器代理,通过服务器的文件能访问第三方资源

15、解释jsonp的原理

ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。

17、请问jsonp是不是ajax中实现跨域访问的技术

jsonp不是AJAX中实现跨域访问的技术

jsonp没有使用XMLHttpRequest对象

jsonp只是一种跨域的协议

jsonp只支持Get方式

Ajax面试常见问题及答案相关推荐

  1. html手机端适配怎么调试,html5面试常见问题及答案:移动端布局与适配篇

    原标题:html5面试常见问题及答案:移动端布局与适配篇 1. 移动布局自适应不同屏幕的几种方式 (1)响应式布局 (2)100%布局(弹性布局) (3)等比缩放布局(rem) 2. iscroll安 ...

  2. 英文面试常见问题和答案

    英文面试常见问题和答案 2.2.1 关于工作(About Job) 实际工作中,员工常常需要不断学习和勇于承担责任,求职者如果能表现出这种素质,会给应聘方留下良好的印象. 面试例题1:What ran ...

  3. ios开发面试常见问题及答案

    1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...

  4. 互联网运营面试题_网站运营面试常见问题和答案

    1. 请你自我介绍一下你自己? 您好,我是个有责任心的人,很多人问我如何才能做好运营,除了态度和责任心,这取决于你会在这个工作上花多少时间.运营,其实远远没有很多人想象的那么简单,而且现在真正重视运营 ...

  5. 软件测试面试常见问题及答案(发散思维、接口、性能、概念、)

    目录 一.思维发散 二.软件工程 三.测试概念和模型 四.测试计划与工具 五.测试用例设计 六.接口测试 七.性能测试 一.思维发散 1. 一个球,一把尺子长度是球直径的2/3,怎样测出半径? 2. ...

  6. 操作系统考研复试、工作面试常见问题及答案

    文章目录 1.进程与线程的关系以及区别? 2.进程的常见状态?以及各种状态之间的转换条件? 3.进程的调度算法有哪些? 4.非抢占式调度与抢占式调度? 5.什么是死锁?产生死锁的条件?如何避免死锁? ...

  7. python数据分析面试常见问题及答案_十道 Python 面试问题陷阱

    无论是应聘 问题1:请问如何修改以下Python代码,使得下面的代码调用类A的show方法 答:这道题的考点是类继承,只要通过class 方法指定类对象就可以了.补充的代码如下: 问题2:请问如何修改 ...

  8. 淘宝二面试常见问题的答案来了,你看了吗?(二面及答案)

    1.JVM内存结构1.7和1.8的区别 JVM内存分配 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1.7和1.8区别 其实,移除永久代的工作从JDK ...

  9. 数据结构考研复试、工作面试常见问题及答案(动画版)

    文章目录 1.逻辑结构与物理结构(存储结构)的区别? 2.算法的特点? 3.常见的数据结构? 4.链表结构和顺序存储结构的区别? 5.线性链表? 6.数组和链表的区别? 7.判断一个链表是否有环,如何 ...

最新文章

  1. C语言图形界面的编程
  2. AJAX跨域资源共享 CORS 详解
  3. 常用的绘图约定——提高绘图和读图的效率
  4. 计算机二级C语言辅导j机构,全国计算机二级C语言公基础知识辅导.pptx
  5. 西安电子科技大学第16届程序设计竞赛 F题
  6. mysql 辅助索引_MySQL InnoDB B+tree索引
  7. 字体图标 —— IconMoon
  8. Q-学习,马克尔决策过程:强化学习
  9. STM32工作笔记0072---UCOSIII在STM32F103上的移植
  10. Eclipse Egit 安装
  11. Mac上最好的白噪音软件:Noizio for Mac
  12. HTML5 浏览器大小缩放到一定大小固定页面
  13. MacOS下解决宿主机和docker容器之间网络互通
  14. 【装箱问题】基于Shuffled Complex Evolution (SCE) 算法解决装箱问题 (BPP)附matlab代码
  15. 06-手机登录token生成容联云短信验证用户认证和网关整合(网关做统一权限认证)
  16. 【面向对象程序设计】侩子手游戏(Java、JavaFX)
  17. 【论文笔记】:PyramidBox :A Context-assisted Single Shot Face Detector
  18. 2007最牛X网站收集-From bolm
  19. 获取每日一句,每天发给女朋友。
  20. Windows 8本地化多语言支持

热门文章

  1. c++ 判断inf 和nan 的情况
  2. HTML选中所有的div,单击鼠标即可选择所有DIV文本
  3. 暑期结束为你的新学期立下Flag吧
  4. Dirbuster使用
  5. ThinkPHP支付功能对接
  6. javap命令使用示例
  7. ArcGIS API for javascript解决打印输出的中文为乱码问题
  8. JavaScript关于JSON字符串的相关操作
  9. Web应用引入中文字体问题
  10. OBD落锁器工作原理 CAN总线控制