AJAX
1,Ajax 是什么? 如何创建一个Ajax? ajax的全称:Asynchronous Javascript And XML。异步传输+js+xml。 所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验 (1)创建XMLHttpRequest
对象,也就是创建一个异步调用对象 (2)创建一个新的HTTP
请求,并指定该HTTP
请求的方法、URL
及验证信息 (3)设置响应HTTP
请求状态变化的函数 (4)发送HTTP
请求 (5)获取异步调用返回的数据 (6)使用JavaScript
和DOM
实现局部刷新 ajax是一种创建交互式网页的计算
2,同步和异步的区别? 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容
3,如何解决跨域问题? jsonp、 iframe、window.name、window.postMessage
、服务器上设置代理页面
4,http状态码有那些?分别代表是什么意思? 100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息 200 OK 正常返回信息 201 Created 请求成功并且服务器创建了新的资源 202 Accepted 服务器已接受请求,但尚未处理 301 Moved Permanently 请求的网页已永久移动到新位置。 302 Found 临时性重定向。 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。 304 Not Modified 自从上次请求后,请求的网页未修改过。 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。 401 Unauthorized 请求未授权。 403 Forbidden 禁止访问。 404 Not Found 找不到如何与 URI 相匹配的资源。 500 Internal Server Error 最常见的服务器端错误。 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
5,一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么? 1、浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http
协议就按照 Web 方式来处理; 2、调用浏览器内核中的对应方法,比如 WebView
中的 loadUrl
方法; 3、通过DNS
解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求; 4、进行HTTP
协议会话,客户端发送报头(请求报头); 5、进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS
等服务器; 6、进入部署好的后端应用,如 PHP、Java、JavaScript、Python
等,找到对应的请求处理; 7、处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304; 8、浏览器开始下载html
文档(响应报头,状态码200),同时使用缓存; 9、文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js
),同时设置了cookie
; 10、页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。
8,请解释 JSONP 的工作原理,以及它为什么不是真正的 AJAX。 jsonp
的工作原理是,动态的创建了一个全局方法,并且动态生成script
标签,将script标签的src
属性变为(接口地址?callback
=动态生成方法的方法名)请求数据,而后台则需要将接收到的callback
值与数据一同返回,呈现出执行js
方法的语句(方法名(数据)),其实就是在请求回来的数据中是执行请求是动态生成的js
方法,生成了假象的ajax
,所以jsonp
只能做get类型请求