<script> 標籤的 src 屬性不受同源策略限制。服務端返回可執行的 JS 代碼:callbackName({"Name":"ss", "Age":45}),瀏覽器加載後立即執行,調用全局函數 callbackName 並傳入數據對象。
// 1. 定義全局回調函數(必須在 window 下,不能在局部作用域)
window.handleUser = function(data) {
console.log(data.Name, data.Age);
// 更新 DOM 等業務邏輯
};
// 2. 動態創建 script 標籤發起請求
var script = document.createElement('script');
script.src = 'https://api.example.com/user?callback=handleUser';
document.head.appendChild(script);
// PHP
$callback = $_GET['callback'];
$data = ['Name' => 'ss', 'Age' => 45];
echo "$callback(" . json_encode($data) . ")";
callback 參數格式(僅允許字母數字下劃線),防 XSS。