前端面试Ajxa常见问题整理

1、Ajxa的交互流程有哪几步?

1)创建Ajxa对象

xhr = new XMLHttpRequest

2)规定请求地址

xhr.open(method,url,async)

3)等待服务器相应

xhr.onload

4)向服务器发送请求

xhr.send()

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

在传统的Js中,如果想发送客户端信息到服务器,需要建立一个HTML 表单然后GET或者POST数据到服务器端。用户需要点击提交按钮来发送数据信息,然后等待服务器响应请求,页面重新加载。使用AJXA技术,就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互

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

IE中通过new ActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到,使用jquery封装好的Ajxa,会避免这些问题。

5、Ajxa如何解决浏览器缓存问题

 

1)在Ajxa发送请求前加上 anyAjxaObj.setRequestHeader("If-Modified-Since","0")

2)在Ajxa发送请求前加上 anyAjxaObj.setRequestHeader("Cache-Control","no-cache")

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

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

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

 

6、简述Ajxa的优点

 

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

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

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

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

 

7、简述Ajxa的缺点

 

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

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

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

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

 

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

 

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

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

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

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

 

8、阐述一下异步加载JS

 

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

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

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

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

posted @ 2022-09-05 17:10  安语未  阅读(67)  评论(0编辑  收藏  举报