1.ajax的概念及其优缺点
AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。
优点
- 可以无需刷新页面而与服务器端进行通信。
- 允许你根据用户事件来更新部分页面内容。
缺点
- 没有浏览历史,不能回退
- 存在跨域问题(同源)
- SEO (搜索引擎优化)不友好,爬虫程序无法得到ajax的数据
2.ajax状态值和状态码
在AJAX实际运行当中,对于访问XMLHttpRequest(XHR)时并不是一次完成的,而是分别经历了多种状态后取得的结果,对于这种状态在AJAX中共有5种,分别是:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
下面是常见的HTTP状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
3.什么是跨域,如何解决
- 同源政策:浏览器使用ajax请求只能向与本网站同域名、同协议、同端口的服务器的数据。违背了这个政策的即为跨域。
- 解决方式:
- 通过jsonP,其原理就是利用了script标签天生就具有跨域的能力,当然,它只支持get请求。我们可以在js代码中向动态的html中添加一个script标签,将需要服务器数据的函数通过和目标url拼接成新的url,再将新的url传入scrpit标签的src属性。服务端得到请求参数中的函数,并将数据和函数拼接成js代码,返回给浏览器,浏览器再解析调用。
- 通过设置cors:跨域资源共享。在服务端,设置响应头中的Access-Control-Allow-Origin为*,或者将能够访问的url地址。这个响应头的信息就是告诉浏览器我的服务器允许你跨域,浏览器就会发行。支持各种类型的请求
- 可以通过代理的方式实现。nigix服务器