当 协议不一样或者域名/ip不一样或者端口号不一样 , 都不算是同源javascript
这时候 源生的ajax 就不能进行数据请求了php
JSONP json with paddingcss
在平时的开发中也发现了 ,当咱们请求 js, css,图片 等资源的时候 不管是否是本地,国外的都行,哪的都行。html
用script标签来请求 跨域的资源就是 jsonpjava
不用其余标签由于 script标签请求来的内容都会被当作js代码,json 是源生js支持的数据类型,而且json 能够表达复杂的数据,因此天生的就是有天赋ajax
jsonp.js 咱们就在本地 用fille直接打开呆这段js 的htmljson
function jsonpCallback (result) { console.log(result); } var JSONP = document.createElement('script'); JSONP.type = 'text/javascript'; JSONP.src = "http://localhost/ajaxphp/result.php?callback=jsonpCallback"; document.getElementsByTagName('head')[0].appendChild(JSONP); //? name&value 这个url就是模拟 get请求 目标php文件
result.php 运行本地的服务器 服务器上的 php文件跨域
<?php $arr = Array('a'=>1,'b'=>2,'c'=>3); $result = json_encode($arr); $callback = $_GET['callback']; echo $callback."($result)"; ?>
上面这两个文件 是跨域的 可是仍然能够顺利的访问服务器
jQuery中的 ajax 是封装过的 就是将正常的ajax和jsonp封装到了一块儿,其实跨域的仍是 jsonpapp