html中的script、img的src属性支持跨区,浏览器对其没有限制
发送的请求都是get请求
script
1.script标签具有可跨域的特性,浏览器对它不限制
2.假设不加dataType:jsonp, jquery底层默认发送XMLHttpRequest请求。
当用dataType:jsonp,jquery底层创建了script标签,src=”跨域的地址”。
3.scrip标签的src中的地址和后缀也没关系,文件中指定text/javacript就可以了
<!--这个script是函数,要写在上面,下面的script跨域获取到数据返回的是json(),需要调用json(),要是写在下一个script的下面就找不到了-->
//script标签具有可跨域的特性,php返回的是json(),直接调用了这个函数
//这个函数的目的就是为了获取服务端返回的数据,要执行的内容写在函数中就可以啦
<script>
function jsonp(data){
//在服务端data是一个字符串,到客户端data转为了对象(script标签具有自动转换的功能)
//若果是字符串的话,格式是这样的:{"name":"\u5f20\u4e09","age":10}
//这样就获取了服务端的数据,在函数中就可以对服务端的数据进行操作了
console.log(data);
}
</script>
<script src="src-api.php?callback=jsonp"></script>
服务器端的数据模拟(script):
<?php
header("Content-Type:text/html;charset=utf-8");
$data = $_GET;
//假设下面的数组是在服务端获取到的数据,需要把这个数据返回到客户端
$array = array("name"=>"张三","age"=>10);
//将对象转化为json格式的字符串
$info = json_encode($array);
echo $data["callback"]."(".$info.")";
?>
link标签
href去请求一个地址,和地址的后缀没有关系,
在php文件中已经告诉客户端服务器的文本类型了,浏览器以该文本类型去解析就行了
<head>
<meta charset="UTF-8">
<title>Title</title>
// 利用link的href属性跨域
<link rel="stylesheet" href="02link.php">
模拟的服务端php文件(link)
<?php
//告诉客户端服务器的文本类型
header("Content-Type:text/css;charset=utf-8");
echo "body{background-color: red}"
//若果客户端需要输出js文件的话,文本类型就是text/javascript
//header("Content-Type:text/javascript;charset=utf-8");
//echo "alert(1)";
?>