[英]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.