多么尴尬。我有一个以前的项目,但现在我无法得到最简单的例子 加载和$ .get工作正确。
我的简单小网页如下所示。当我使用firebug时,我可以看到正在发出http请求 (在下面cnn.com的情况下,我也试过google。)但是firebug出于某种原因以红色显示这些请求。
id为'container'的div不会更新。我从来没有看到回调表明“这里是数据”。
一定是真正的简单和愚蠢的东西......但是经过一小时的修修补补,我已经准备好哭了。
任何建议都非常感谢。谢谢!
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
alert('in ready handler');
$('#container').load('http://www.cnn.com/');
alert('after container load');
$.get(
'http://www.cnn.com/',
function(data) {
alert('here is the data' + data);
}
);
alert('after get was called');
});
</script>
</head>
<body>
the container:
<div id="container"></div>
</body>
</html>
答案 0 :(得分:2)
除非您在cnn.com
上托管代码,否则无法使用AJAX从其他域加载资源。
答案 1 :(得分:0)
这是一种跨域保护机制。
最好的选择是在你的服务器上有一个简单的php文件,它从远程站点请求内容并将其发回去,例如。
AJAX.php
$ echo file_get_contents('http://www.cnn.com/');
你JS
$ ('#container').load('ajax.php');
答案 2 :(得分:0)
添加到Dales评论:
有时不允许来自远程服务器的file_get_contents(可能是服务器上的allow_url_fopen为false)。所以你可以改用curl。
您的JS档案
$ ('#container').load('curlRequest.php');
你的curlRequest.php文件
$ch = curl_init("http://www.cnn.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1); //you can use get method also here
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
答案 3 :(得分:0)
答案基本上由伊利亚和戴尔提供(谢谢,先生们)。
我将在他们的回答中添加以下内容,这是我的朋友Eric建议的。
他基本上建议我检查控制台!我应该首先做到这一点。当我在Chrome中启用控制台时,当我点击页面时看到以下错误:
2XMLHttpRequest cannot load http://www.cnn.com/. Origin null is not allowed by Access-Control-Allow-Origin.
如果我第一次玩这个问题的时候我就知道这会让我失望。
唯一的问题是我在Chrome中启用控制台时看到错误,但是当我在Firefox中使用Firebug时我看不到它。因此,如果Firebug没有给我足够的信息,我想这个故事的寓意就是在Chrome中尝试我的请求。 [直到我弄清楚如何从Firebug获取此信息,我将在发布时发布。]