![](/img/trans.png)
[英]How to load external JSON data via an ajax call on html page?
[英]Can I load data from an external page via AJAX?
我剛開始學習jQuery和AJAX。 我可以通過jQuery.load()
將本地頁面(在我的磁盤上)加載到div中,但外部站點似乎不起作用。 我甚至使用wireshark來檢查數據是否從服務器發送(它是)。 示例代碼如下:
<html>
<head>
<script src='jquery-1.4.2.min.js'></script>
<script>
$(document).ready(function() {
// $('#test').load('localpage.htm'); works!
$('#test').load('http://www.google.com/'); // does not work!
});
</script>
</head>
<body>
<div id='test'></div>
</body>
</html>
首先可以做到這一點嗎? 如果是這樣,怎么樣?
您不能對腳本來源之外的其他域執行ajax調用。
要做這樣的事情,你必須在自己的頁面上使用代理頁面,例如:
<script>
$(document).ready(function() {
$('#test').load('ajax/getgoogle.php');
});
</script>
getgoogle.php:
<?php
echo file_get_contents("http://www.google.com/");
?>
你正在遇到同源政策 。 您無法使用AJAX從外部域訪問數據,這被視為安全風險。 其背后的原因是AJAX請求使用瀏覽器存儲的cookie - 如果我嘗試訪問facebook.com,並且您已登錄,則會發送cookie並且我可以訪問您的個人數據。
出於安全原因,您不能使用AJAX從不同的域(或協議或端口)請求頁面。
相反,您可以在服務器上編寫服務器端腳本以將請求轉發到另一個域。 (如果您從file://
運行頁面,則無法執行此file://
url)
加載此PHP腳本,而不是嘗試直接加載網站
$filename = "http://www.sitename.com";
$handle = fopen($filename, "r");
if ($handle)
{
while (!feof($handle))
{
$text .= fread($handle, 128);
}
fclose($handle);
}
print $text;
編輯:或者只是喜歡henchman的file_get_contents解決方案
您無法從其他域調用Ajax。 檢查JSON技術
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.