我遇到了jQuery的一个大问题。我正在尝试让jQuery加载从远程Web服务器上的PHP页面生成的HTML。但每当我尝试在本地运行时,根本没有任何事情发生。但是,无论出于何种原因,当它在我的网络主机上时,它运行得很好。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode" />
<title>Decisive Shoutbox</title>
<style type="text/css">
body
{
margin: 0;
width: 288;
height: 160;
font-family: verdana;
font-size: 20px;
}
#gadgetContent
{
height: 160;
overflow: auto;
vertical-align: middle;
}
.shout
{
font-size: 8px;
}
.date
{
font-size: 6px;
font-color: #010101;
}
</style>
<link href="flexcrollstyles.css" rel="stylesheet" type="text/css" />
<script type="text/jscript" src="scripts/flexcroll.js"></script>
<script type="text/jscript" src="scripts/jquery.js"></script>
<script type="text/jscript" language="jscript">
$(document).ready(function() {
$.get("http://decisive-media.net/gameguy/gadgets/shouts.php", function(data) {
$('#gadgetContent').html(data);
//fleXenv.fleXcrollMain('gadgetContent');
alert("done");
});
});
</script>
</head>
<body>
<div id="gadgetContent">
</div>
</body>
</html>
答案 0 :(得分:0)
由于安全原因,浏览器将ajax调用限制为同一来源,禁止您连接到与您的网页不同的域上的远程服务器。您可以阅读same origin policy on MDN。
潜在的解决方法是JSONP,它使用不受相同原始策略约束的<script>
标记来完成请求,但它需要服务器合作来实现JSONP,因为它必须生成正确的对来自<script>
标记的工作做出回应。
我有一个我构建的Web组件(一个HTML5幻灯片,通过ajax查询服务器以获取幻灯片列表),我在本地测试并在Web上运行。当我在我的测试环境(我的硬盘上的HTML文件)本地测试时,我使用JSONP从远程服务器获取数据以克服安全限制,但是当它在真实环境中运行时,我使用常规的ajax我的应用程序会根据环境自动检测需要哪些内容。
答案 1 :(得分:0)
如果您执行AJAX请求,则应用相同原始策略。您可以阅读有关同源政策here的更多信息。
如果您在localy运行它,则只允许您运行本地ajax请求,如果您在自己的域上运行它,则只允许在您的域上执行请求。