在A網站中,我們希望使用Ajax來獲得B網站中的特定內容。如果A網站與B網站不在同一個域中,那么就出現(xiàn)了跨域訪問問題。你可以理解為兩個域名之間不能跨過域名來發(fā)送請求或者請求數據,否則就是不安全的, 這里可以通過客戶端及服務后臺配合的方法來一解決這個問題
客戶端解決方案:
$("#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數據