首頁 >web前端 >js教程 >JSONP如何解決jQuery AJAX跨域問題?

JSONP如何解決jQuery AJAX跨域問題?

DDD
DDD原創
2024-12-22 22:15:13305瀏覽

How Can JSONP Solve jQuery AJAX Cross-Domain Issues?

jQuery AJAX 跨域問題

在提供的場景中,兩個PHP 檔案(test.php 和testserver.php)使用以下方式進行通訊jQuery 的AJAX,當它們駐留在不同的伺服器上時,就會出現跨網域限制。伺服器 A 託管 test.php(例如 localhost),而伺服器 B 則託管 testserver.php(例如 Web 伺服器)。

問題:
儘管成功執行了 AJAX 請求當檔案位於同一伺服器上時,如果它們位於不同的伺服器上,則會失敗並出現錯誤。這是由於同源策略 (SOP)。

解決方案:
為了解決這個跨域問題,採用了 JSONP(帶有 Padding 的 JSON)。 JSONP 利用回呼來繞過瀏覽器限制。

實作:

jQuery (test.php):

PHP (testserver.php):

說明:

  1. jQuery 的$.ajax() 方法被修改為使用'jsonp'作為dataType.
  2. 傳遞給$.ajax() 的回呼函數被分配給PHP變數$callbackName。
  3. PHP 腳本使用callbackName 值在函數呼叫中嵌入 JSON 資料。
  4. 這允許瀏覽器動態產生 <script> 。使用 JSON 資料標記,繞過 SOP。 </script>

注意:
另一種 jQuery 方法是 $.getJSON(),它透過附加 ' 來更簡潔地處理 JSONP 請求回調=? '到網址。但是,必須更改 URL 以包含此參數,$.getJSON() 才能正常運作。

以上是JSONP如何解決jQuery AJAX跨域問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn