1

多么尴尬。我在以前的项目中进行过这项工作,但现在我无法获得最简单的负载示例,并且 $.get 可以正常工作。

我的简单小网页如下所示。当我使用 firebug 时,我可以看到正在发出 http 请求(在下面的 cnn.com 的情况下,我也尝试了 google。)但 firebug 出于某种原因将这些请求显示为红色。

id 为“容器”的 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

4 回答 4

2

除非您在其上托管您的代码,否则您cnn.com无法使用 AJAX 从另一个域加载资源。

于 2012-04-13T02:29:51.623 回答
0

这是一种跨域保护机制。

最好的选择是在您的服务器上有一个简单的 php 文件,它从远程站点请求内容并将其发回,例如

AJAX.php

$ echo file_get_contents('http://www.cnn.com/');

你JS

$ ('#container').load('ajax.php');
于 2012-04-13T02:38:15.947 回答
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;
于 2012-04-13T03:27:34.707 回答
0

答案基本上是由 Illia 和 Dale 提供的(谢谢,先生们)。

我将在他们的答案中添加以下内容,这是我的朋友 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 获取此信息,我将在我这样做时发布。]

于 2012-04-16T01:37:35.690 回答