更新時間:2024-03-11 來源:黑馬程序員 瀏覽量:
$.getJSON()方法支持跨域請求。在網(wǎng)絡(luò)中,協(xié)議、域名、端口號有任何一個不同都屬于不同的域,而跨域就是指一個域的頁面請求另外一個域的資源。出于安全考慮,瀏覽器限制了跨域行為,只允許頁面訪問本域的資源,這種限制稱為同源策略。
如果需要跨域請求,可以通過JSONP(JSON with Padding)、CORS(Cross-Origin Resource Sharing)等方案來實現(xiàn)。$.getJSON()方法采用JSONP方案實現(xiàn)跨域請求,其使用方式非常簡單,在請求地址后增加url參數(shù)“callback=?”即可。其中,callback表示回調(diào)函數(shù),它的值“?”將被$.getJSON()方法替換成一個自動生成的函數(shù)名。
為讀者更好地理解跨域請求,下面通過一個案例進行演示。由于JSONP需要服務(wù)器端的配合,因此先創(chuàng)建一個jsonp.php用于在服務(wù)器端執(zhí)行,具體代碼如下。
jsonp.php
1 <?php 2 $callback = $_GET['callback']; 3 echo "$callback(123);";
在上述代碼中,第2行通過變量$callback接收來自url參數(shù)中的callback回調(diào)函數(shù)名,第3行對變量進行了字符串拼接,拼接結(jié)果為“回調(diào)函數(shù)名(123);”,表示調(diào)用函數(shù)并傳遞參數(shù)“123”?!?23”是返回給瀏覽器的數(shù)據(jù),此處可以根據(jù)實際需求換成其他數(shù)據(jù)。