jQuery AJAX Komunikasi Merentas Domain
Permintaan AJAX merentas domain menghadapi pengehadan disebabkan oleh sekatan Dasar Same-Origin. Apabila skrip klien pada satu domain cuba mengakses sumber daripada domain lain, ia biasanya gagal disebabkan oleh kebimbangan keselamatan.
Kes:
Pertimbangkan kes di mana ujian. php berada pada localhost, manakala testserver.php dihoskan pada pelayan web. Permintaan AJAX daripada test.php ke testserver.php akan gagal, mencetuskan makluman "Ralat" disebabkan sifat permintaan merentas domain.
Penyelesaian:
Untuk mengatasi had ini, JSONP (JSON dengan Padding) boleh bekerja.
jQuery:
$.ajax({ url: "testserver.php", dataType: "jsonp", // Note the lowercase 'p' in JSONP success: function (json) { // Handle successful response alert("Success"); }, error: function () { alert("Error"); } });
PHP:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
Dalam PHP, nama fungsi panggil balik diluluskan oleh jQuery tersedia melalui $_GET['panggilan balik']. Dengan menggemakan respons dalam format "callbackName('jsonString')", kami membenarkan jQuery mentafsir data JSON.
Alternatif:
jQuery menyediakan kaedah ringkas dipanggil $.getJSON() yang memudahkan permintaan AJAX merentas domain. Walau bagaimanapun, ia memerlukan penambahan "panggilan balik=?" ke URL sebagai parameter GET. jQuery secara automatik menggantikan ruang letak ini dengan kaedah panggil balik yang dijana.
Atas ialah kandungan terperinci Bagaimanakah jQuery AJAX Boleh Mengatasi Sekatan Dasar Asal Sama untuk Komunikasi Merentas Domain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!