直接上例子
客户端js代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>跨域test</title>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
</body>
<script>
//回调函数
function getjson(data){
console.log(data.name);
}
</script>
<script src="https://域名/jsonTest.html?cb=getjson"></script>
</html>
服务端jsonTest.html代码:
getjson(
{
"name":"this is a cross response data!"
}
)
注意:
1.cb是固定参数名,是callback的缩写。该方法需满足两个条件才可顺利执行:
(1)客户端回调函数方法名与cb的值一致才能被顺利回调。
(2)服务端声明的函数名也必须与回调函数名保持一致。
2.使用jsonp解决跨域(仅适用于GET请求) 实现原理:
script标签是不受同源策略的限制的,它可以载入任意地方的 JavaScript 文件,而并不要求同源。 所以 JSONP 的理念就是,我和服务端约定好一个函数名,当我请求文件的时候,服务端返回一段 JavaScript。这段 JavaScript 调用了我们约定好的函数,并且将数据当做参数传入。非常巧合的一点(其实并不是),JSON 的数据格式和 JavaScript 语言里对象的格式正好相同。所以在我们约定的函数里面可以直接使用这个对象。