Rumah >hujung hadapan web >tutorial js >Bagaimanakah JSONP Boleh Menyelesaikan Isu AJAX Cross-Domain dalam jQuery?

Bagaimanakah JSONP Boleh Menyelesaikan Isu AJAX Cross-Domain dalam jQuery?

Susan Sarandon
Susan Sarandonasal
2024-12-18 09:49:10141semak imbas

How Can JSONP Solve Cross-Domain AJAX Issues in jQuery?

AJAX Rentas Domain dengan jQuery

fungsi AJAX jQuery ialah alat penting untuk pembangunan web dinamik. Walau bagaimanapun, apabila melaksanakan permintaan AJAX merentas domain yang berbeza, anda mungkin menghadapi isu perkongsian sumber silang asal (CORS).

Satu isu sedemikian timbul apabila test.php dan testserver.php berada pada pelayan berasingan, mengakibatkan " Amaran ralat" sedang dicetuskan. Ini kerana langkah keselamatan penyemak imbas mengehadkan permintaan AJAX daripada asal yang berbeza secara lalai.

Penyelesaian: JSONP

Untuk mengatasi CORS, JSONP (JSON dengan Padding) boleh digunakan. JSONP menggunakan pendekatan berbeza dengan memuatkan skrip secara dinamik dari pelayan jauh, mengelakkan CORS sekatan.

Pelaksanaan

jQuery:

$.ajax({
  url: "testserver.php",
  dataType: 'jsonp', // Specify JSONP data type
  success:function(json){
    // Process JSON data
    alert("Success");
  },
  error:function(){
    alert("Error");
  }      
});

PHP:

<?php
$arr = array("element1", "element2", array("element31", "element32"));
$arr['name'] = "response";
echo $_GET['callback']. "(".json_encode($arr).");";
?>

Perhatikan bahawa pernyataan gema PHP direka untuk membungkus data JSON dalam fungsi panggil balik yang disediakan oleh jQuery, termasuk petikan yang betul.

Sebagai alternatif, $.getJSON() jQuery boleh digunakan sebagai kaedah trengkas, bersama-sama dengan menambahkan "panggilan balik=?" sebagai parameter GET ke URL. jQuery akan menjana fungsi panggil balik yang sesuai secara automatik berdasarkan parameter ini.

Atas ialah kandungan terperinci Bagaimanakah JSONP Boleh Menyelesaikan Isu AJAX Cross-Domain dalam jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:React Hooks Flow: A Deep DiveArtikel seterusnya:React Hooks Flow: A Deep Dive