簡體   English   中英

jQuery 和 JSON 的跨域請求在 Inte.net Explorer 中不起作用(安全問題?)

[英]Cross-domain request with jQuery and JSON not working in Internet Explorer (security issue?)

我想使用 Ajax 發出請求,但當我意識到域名不同時,我決定改用 JSON。

代碼:

主 PHP 文件(腳本代碼)

$(".name").click(function(){
    //Get information
    var id = $(this).attr("id").substring(1);

    jQuery.getJSON("https:/otherdomain.com/makereq.php?id="+id+"&callback=?",
    function(data) {
         alert("id: " + data.id);
         return false;
    });
});

Makereq PHP 文件

$jsonData = array('id'=>$_GET['id']);
echo $_GET['callback'] . '(' . json_encode($jsonData) . ');';

這在 Firefox 中工作正常。我得到數據並且警報顯示發送和接收的 ID。 但在 Inte.net Explorer 中,出現安全錯誤,提示內容已被阻止,無法接收數據。 在 Chrome 中,它也不起作用。

為什么會這樣或者我做錯了什么? 是否有任何解決方案可以在沒有來自其他域的瀏覽器錯誤/警報的情況下發送和接收數據?

我認為這不能以這種方式完成。 嘗試在您的域中使用橋接文件 PHP 來讀取其他主機內容cURL 那肯定有效。

查看getJSON上的jQuery 頁面 關於JSONP的部分是您在嘗試將數據與跨域請求的回調一起使用時所追求的。

getJSON()在這里不起作用。 你想要做的是使用回調的名稱編寫一個 function 並將你的 php 文件返回的數據實際加載為 javascript 文件。

<script src="https:/otherdomain.com/makereq.php?id=1&callback=callBack"></script>

<script>
    callBack(data) {
       [do stuff...]
    }
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM