1.同步交互与异步交互
同步交互:用户在URL地址输入http://www.baidu.com,服务器接收请求并进行相应处理,此时用户无法操作,只能等待,只有当返回数据到客户端的时候,用户才能继续操作
异步交互:用户操作某个页面,请求某个数据,客户可以继续操作(服务器返回数据),不涉及到整个页面的刷新2.XmlHttp
XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面
3.ajax demo (理解ajax)
文件有两个1.html和1.php
1.html代码如下
1 2 3 4 5Document 6 7 8 9 10 11 36
1.php代码如下
1
结果是:
4.Ajax跨域是什么
我们先回顾一下域名地址的组成:
http:// www . google : 8080 / script/jquery.js
http:// (协议号)
www (子域名)
google (主域名)
8080 (端口号)
script/jquery.js (请求的地址)
* 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。
* 不同的域之间相互请求资源,就叫“跨域”。
比如: 请求
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问。比如说你的网站域名是aaa.com,想要通过AJAX请求bbb.com域名中的内容,浏览器就会认为是不安全的,所以拒绝访问
5.解决方案
方案1 jsonp
JSONP是JSON格式的扩展.如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。
jsonp有什么用:由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求
html代码如下(使用jquery):
1 2 3 4 5Document 6 7 8 9 10 11 12 31
结果:
若注释dataType:'jsonp'这一行代码结果如下:(提示跨域导致请求失败)
html代码如下(原生js,不使用jquery)
1 2 3 4 5Document 6 7 8 9 10 28
php代码如下
1
结果:
方案2 jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择
6.实例(跨域请求360搜索接口)
1 2 3 4 5Document 6 26 27 28 2930 31 3242 43 77 78334134 39
40
结果: