jQuery“get”方法在本地不起作用

时间:2012-03-10 22:57:38

标签: javascript jquery html get

  

可能重复:
  Why is cross-domain Ajax a security concern?

我遇到了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>

2 个答案:

答案 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请求,如果您在自己的域上运行它,则只允许在您的域上执行请求。