Pemandangan
Jika ada dua server dengan nama domain yang berbeda, A.com dan b.com, di antarmuka b.com/b_return_js.php, beberapa data dapat diperoleh. Tentu saja, jika ada di halaman B.com, Anda dapat menggunakan AJAX untuk secara langsung meminta antarmuka ini, tetapi bagaimana jika diminta pada halaman A.com.
Kode antarmuka b_return_js.php:
Salinan kode adalah sebagai berikut:
$ a = array (
array ('nama pengguna' => 'tony', 'usia' => 25),
array ('nama pengguna' => 'yimeng', 'usia' => 23),
array ('nama pengguna' => 'ermeng', 'usia' => 22),
array ('nama pengguna' => 'sanmeng', 'usia' => 21),
);
shuffle ($ a);
echo 'var userdata =' .json_encode ($ a). ';'; // Umumnya, jika itu adalah permintaan situs dari B.com, itu akan langsung mengembalikan JSON_ENCODE ($ A). Namun, jika Anda ingin menggunakan atribut SRC untuk mencapai domain silang, di sini kami perlu menetapkan nilai ini ke variabel JS untuk memastikan bahwa data ini dapat diperoleh dan digunakan dalam halaman yang dimuat oleh tag skrip.
Implementasi sederhana
Ada cara mudah untuk langsung pergi di halaman di bawah A.com
Salinan kode adalah sebagai berikut:
<skrip src = "http://b.com/b_return_js.php"> </script>
Dengan cara ini, data yang dikembalikan dalam antarmuka ini dapat secara langsung diperoleh dari halaman A.com.
Tapi ada cacat di sini. Data ini hanya dapat diperoleh saat halaman dimuat. Jika kami ingin menggunakan AJAX, metode yang dapat memperoleh data antarmuka baru kapan saja tidak terlalu cocok. Misalnya, mengklik tombol untuk mendapatkan data yang sebagian disegarkan dari antarmuka ini, metode ini agak tidak pantas.
Implementasi Kelas AJAX
Bahkan, gagasan untuk mengimplementasikan kelas AJAX yang disebutkan di atas adalah untuk meregenerasi tag di atas ketika kondisi AJAX dipicu, sehingga dapat memperoleh data dari antarmuka lagi. Namun, pada kenyataannya, masih agak sulit untuk diterapkan (setidaknya butuh banyak upaya bagi saya).
Pada kode:
Jika ada tombol di bawah halaman a.com/scriptsrc.php
<input type = "tombol" id = "AJAX_REQUEST_FROM_B" value = "permintaan dari b.com"/>
Setiap klik akan mendapatkan data dari antarmuka b.com/b_return_js.php, mirip dengan kode implementasi AJAX:
Salinan kode adalah sebagai berikut:
fungsi createScript ()
{
//console.log(ele);
ele.src = 'http://b.com/b_return_js.php';
ele.type = 'Text/JavaScript';
ele.ibanguage = 'javascript';
}
fungsi getData ()
{
console.log (userdata);
}
$ ('#AJAX_REQUEST_FROM_B'). Klik (function () {
// Tag skrip harus dimuat ulang setiap saat, jadi tag skrip baru harus diregenerasi setiap saat untuk memastikan bahwa data dapat diperoleh dari server lintas-domain.
if (ele && ele.parentnode)
{
//ele.parentnode.removechild(ele); // Penghapusan semacam ini tidak dapat sepenuhnya menghapus elemen dari memori, tetapi hanya menghapus lokasi di DOM
untuk (properti var di ele) {
hapus ele [properti]; // hapus sepenuhnya
}
}
ele = document.createelement ('skrip'); // ini adalah ele baru
createScript ();
document.getElementsbyTagname ("head") [0] .AppendChild (ELE);
ele.onload = function () {getData ()}; // userdata dapat diperoleh setelah elemen skrip dimuat. Setiap kali informasi pengguna diperoleh dalam urutan acak.
});
Dengan cara ini, setiap kali Anda mengklik tombol, Anda akan mendapatkan data dari antarmuka lagi, dan efeknya mirip dengan Ajax, tetapi ini adalah metode Cross-Domain dari JS. Meskipun sedikit tidak berterima kasih, itu masih merupakan cara berpikir.