Adegan
Jika terdapat dua pelayan dengan nama domain yang berbeza, a.com dan b.com, anda boleh mendapatkan beberapa data dalam antara muka b.com/b_return_js.php. Sudah tentu, jika ia berada di halaman b.com, anda boleh menggunakan ajax untuk meminta terus antara muka ini, tetapi bagaimana jika ia diminta pada halaman a.com.
Kod antara muka b_return_js.php:
echo 'var userdata = '.json_encode($a).';'; //Secara amnya, jika ia adalah permintaan dalam tapak daripada b.com, json_encode($a) akan dikembalikan secara langsung, tetapi jika anda ingin menggunakan atribut src untuk mencapai domain silang , di sini kita perlu menetapkan nilai ini kepada pembolehubah js untuk memastikan data ini boleh diperoleh dan digunakan dalam halaman selepas teg skrip dimuatkan.
Pelaksanaan mudah
Terdapat cara mudah untuk pergi ke halaman di bawah a.com terus
Dengan cara ini, data yang dikembalikan oleh antara muka ini boleh didapati terus di halaman a.com.
Tetapi terdapat kelemahan di sini Data ini hanya boleh diperolehi apabila halaman dimuatkan. Jika kita ingin menggunakan ajax untuk mendapatkan data antara muka baharu pada bila-bila masa, contohnya, klik butang untuk mendapatkannya antara muka. Penyegaran data separa, kaedah ini agak tidak sesuai.
Pelaksanaan seperti Ajax
Sebenarnya, idea untuk melaksanakan perkara seperti ajax yang disebutkan di atas adalah untuk menjana semula tag di atas apabila keadaan ajax dicetuskan, untuk mendapatkan data dari antara muka sekali lagi, tetapi sebenarnya ia adalah masih agak sukar untuk dilaksanakan (sekurang-kurangnya bagi saya) Ia mengambil banyak usaha).
Kod muat naik:
Andaikan terdapat butang di bawah halaman a.com/scriptSrc.php
Setiap klik akan memperoleh data daripada antara muka b.com/b_return_js.php, serupa dengan kod pelaksanaan ajax:
fungsi getData()
{
console.log(data pengguna);
}
$('#ajax_request_from_b').klik(function(){
//Teg skrip ini perlu dimuat semula setiap kali, jadi teg skrip baharu mesti dijana semula setiap kali untuk memastikan data boleh diperoleh daripada pelayan merentas domain
Jika(ele && ele.parentNode)
{
//ele.parentNode.removeChild(ele); //Pemadaman jenis ini tidak boleh memadam sepenuhnya ele daripada memori, tetapi hanya mengalih keluar kedudukannya dalam dom
untuk (sifat var dalam ele) {
padam ele [harta ];
}
}
ele = document.createElement('script'); //Ini ialah ele baharu
CreateScript();
Document.getElementsByTagName("head")[0].appendChild(ele);
ele.onload = function(){getData()}; // Data pengguna boleh diperolehi selepas elemen skrip dimuatkan Setiap kali, maklumat pengguna diperoleh dalam susunan rawak
});