jquery:我无法获得$ .get或$('#idOfElement')。即使是最简单的例子,也可以加载。

时间:2012-04-13 02:28:15

标签: jquery ajax

多么尴尬。我有一个以前的项目,但现在我无法得到最简单的例子 加载和$ .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>

4 个答案:

答案 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获取此信息,我将在发布时发布。]