溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PHP中如何解決ajax跨子域的問(wèn)題

發(fā)布時(shí)間:2021-08-05 10:25:45 來(lái)源:億速云 閱讀:110 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下PHP中如何解決ajax跨子域的問(wèn)題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

具體如下:

對(duì)于主域相同,子域不同,我們可以設(shè)置相同的document.domain來(lái)欺騙瀏覽器,達(dá)到跨子域的效果。

例如:我們有兩個(gè)域名:www.a.com 和 img.a.com

在www.a.com下有a.html

在img.a.com下有img.json和img.html這兩個(gè)文件。

img.json就是一些我們要獲取的數(shù)據(jù):

[
  {
    "name" : "img1",
    "url" : "https://cache.yisu.com/upload/information/20201209/266/35128.jpg"
  },
  {
    "name" : "img2",
    "url" : "https://cache.yisu.com/upload/information/20201209/266/35129.jpg"
  }
]

img.html就是我們iframe要引用的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
<script src="./jquery.js"></script>
<script type="text/javascript">
  document.domain = "a.com";

  var p = parent.window.$;
  p("#sub").text("我是子頁(yè)面添加的");
</script>
</body>
</html>

a.html就是要通過(guò)跨子域獲取數(shù)據(jù)的頁(yè)面:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
<!-- 通過(guò)跨域獲取數(shù)據(jù),并添加到ul中 -->
<ul id="data"></ul>

<!-- 子頁(yè)面通過(guò)parent.window來(lái)訪(fǎng)問(wèn)父頁(yè)面 -->
<div id="sub"></div>

<!-- 通過(guò)iframe引用img.a.com下的img.html -->
<iframe id="iframe" src="http://img.a.com/img.html"></iframe>

<script src="./jquery.js"></script>
<script type="text/javascript">
document.domain = "a.com";

$("#iframe").bind("load", function() {
  //獲取子頁(yè)面的jquery對(duì)象
  iframe = document.getElementById("iframe").contentWindow.$;

  iframe.getJSON("http://img.a.com/img.json", function(data) {
    var con = "";
    //注意這里的$對(duì)象是www.a.com上的
    $.each(data, function(i, v) {
      con += "<li>" + v.name + ":" + v.url + "</li>";
    });
    $("#data").html(con);
  });
});
</script>
</body>
</html>

a.html中我們通過(guò)contentWindow.$來(lái)獲取子頁(yè)面的jquery對(duì)象,然后通過(guò)getJSON獲取數(shù)據(jù),并通過(guò)www.a.com上的$對(duì)象把數(shù)據(jù)寫(xiě)入到ul中。

在子頁(yè)面img.html中我們通過(guò)parent.window來(lái)訪(fǎng)問(wèn)父頁(yè)面的$對(duì)象,并操作元素添加數(shù)據(jù)。

看完了這篇文章,相信你對(duì)“PHP中如何解決ajax跨子域的問(wèn)題”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI