之前看過用jsonp實作跨域,一直沒有用到。現在剛好有個東西要到。試過了網路上的很多方法,都沒有用。最後終於搞清楚了用法,記錄一下。
客戶端:
$(document).ready(function(){
$.ajax({
type: 'GET',
async: false,
url: remote_url,
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'fun',
data: {a: 'b'},
sucess: function(json) {
alert(json);
}
});
});
function fun(json) {
alert(json);
}
伺服器端
header('Content-Type: application/json; charset=utf-8');//輸出頭
//your code
echo $GET['callback'] . '(' . json_encode($GET) . ')';
一定要呼叫客戶端js中的回呼函數,不然會出錯。
關於js跨越,上面一種方法需要服務端的配合,輸出回呼函數。
假如需要造訪別人的網站抓取一些東西,除了用iframe之外,如果需要使用js,如何來處理呢。
我們知道,服務端存取遠端鏈接,是不存在跨域問題的。因此,我們可以繞一個彎,使用js存取我們本地的程序,在程式中存取我們的目標網址。這是一種新的思路,有需要的可以嘗試。