最早接觸jsonp是在網站初步用單點登錄的時候,需要在主站的“退出登錄”按鈕被點擊時,主動通知另外一個子站刪除用戶的cookie。當時決定用Ajax的方式通知子站,考慮到一直用的json數據傳遞方式在跨域的時候不起作用,只要改用jsonp。剛聽過這個概念不瞭解其實現方法,開始百度一堆資料,越看越不明白。在寫代碼的時候項目組長也幫了不少忙,又聽他長篇大論一通說,我愣是還不懂。還好那會兒做的簡單,只是訪問子站的一張頁面,頁面刪完cookie之後返回一個true或false的狀態。近期又有做跨域的東西,這次總算知道怎麼用啦。。。
下面直接貼代碼:
子站訪問主站的url取數據:
$.ajax({
url: 'http://www.mainhost.com/api/api_userinfo.php',
dataType:'jsonp',
success:function(rjson){
if (rjson.code == 0){
$('.user a.balance').text(rjson.result.balance);
$('.user a.credit').text(rjson.result.credit);
}
}
});
主站的api_userinfo.php文件:
$returnValue['code']=0;
$returnValue['result']=array('balance'=>$user_info['balance'],'credit'=>$user_info['credit']);
echo json_encode($returnValue);
這樣看jsonp和json的用法壓根沒差別,還是後臺傳字符串到前端。