接口网址:http://www.k780.com
浏览器同源策略阻止跨域:
①同域名
②同端口
③同协议
能跨域的标签:
img
link
script 的src
最简单跨域:
script的scr为数据的url,加个get参数为函数名,输出页面 echo $_GET['参数']()。
js页面定义:函数名(msg){alert(msg);}
JQ形式跨域①:
url为接口网址;方式一定是get;dataType:jsonp;jsonpCallback:回调函数名,跟接口网址的函数名一样;
在success中操作数据
JQ形式跨域②:
$.ajax({
type:"GET",
url:"网址",
data:"正常传递参数",
dataType:'jsonp', //声明 jsonp形式
jsonp:'cbk', //php端 echo $_GET['cbk'].'('.数据.')';会把successs当作回调函数。
success:function(msg){
alert(msg);
}
});
php端:echo $_GET['cbk']() ///实现回调。
注:jsonp:??时是告诉服务器端success是回调函数,因为它属于匿名函数。
JQ的get形式jsonp:
var url="url?callback=?";
$.get(url,function(msg){alert(msg)},'jsonp');
//参数③是声明为jsonp;callback是回调函数,?是因为是匿名函数,php页面 $_GET['callback'](数据)实现回调。
JS形式接口:
php页面:echo"var data{json_encode($data)}";
html页面:$.getScript(网址,success(msg){操作data}); //不需要回调
getScript() 1.2版本后可以跨域请求 js 形式数据,函数操作数据。
普通ajax形式解决同源:
在php页面加个header头,无需回调函数,正常输出数据。*为所有域名都可访问。
header('Access-Control-Allow-Origin:*');