在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的, 这里可以通过客户端及服务后台配合的方法来一解决这个问题
客户端解决方案:
$("#btn").on('click',function(){ var data = {names:'庄子'}; $.ajax({ type :'post', url :'http://www.ncyateng.com/test/test', data :data, dataType: 'jsonp', crossDomain: true, jsonp:"callBack", //获取数据的函数, 服务后台接收时的名字要一致 success:function(res){ alert(res.names); console.log(res); } }) })
JS解析上面返回的数据
let data = res.data; //ajax返回的数据类型 function jsonCallback(json){ return json; } var jsonObj = eval(data); //这里的jsonObj得到的就是jsonCallback里面的内容
服务端操作:
$names = isset($_POST["names"])?$_POST["names"]:"哈哈"; $jsonp = $_GET['callBack'];//get接收jsonp自动生成的函数名 $arr = array( 'names' => $names ); echo $jsonp.'('. json_encode($arr). ')'; //jsonp函数名包裹json数据