协议(http//),域名,端口(默认80)都一致
协议,域名,端口有一个或多个不一致
网页:http://www.test.com/index.html
接口:http://www.api.com/userlist
非同源的网站之间,不允许进行资源交互
浏览器对服务器的跨域请求可以正常发起,跨域响应回来的数据,因同源策略关系被浏览器拦截,获取不到
JSONP 和 CORS。
解决跨域数据访问问题,是js的脚本 不是ajax
script src 不是一个ajax请求,实现跨域请求数据
发送请求时指定回调函数的名字,响应的数据是一个函数的调用,调用函数时会传入数据
①定义success回调函数:
<script>
function success(data) {
console.log('获取到了data数据:')
console.log(data)
}
</script>
②通过<script>标签,请求接口数据:
<script
src="http://ajax.frontend.itheima.net:3006/api/jsonpcallback=success&name=zs&a
ge=20">
// 根据指定的callback的函数名 不能写成固定的引入js
</script>
<script>
$(function () {
$.ajax({
url: 'http://www.liulongbin.top:3006/api/jsonp?&name=a&age=30', //这是后端写好的接口我们直接调用
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'success',
success: function (res) {
console.log(res)
},
})
})
</script>
只有最有一次触发生效!
应用:输入框
减少事件触发的频率,选择性地执行一部分事件!
应用:懒加载:计算滚动事件的位置, 鼠标连续点击事件