之前看到過用jsonp實現跨域,一直沒有用到。現在剛好有個東西要到。試過了網上的很多方法,都沒有用。最後終於搞清楚了用法,記錄一下。
客戶端:
代碼如下:
<!-- lang: js -->
$(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訪問我們本地的程序,在程序中訪問我們的目標網址。這是一種新的思路,有需要的可以嘗試一下。