1

なんて恥ずかしい。以前のプロジェクトでこれを行っていましたが、今は load と $.get の最も単純な例を正しく動作させることができません。

私の簡単な小さなウェブページを以下に示します。firebug を使用すると、http リクエストが行われていることがわかります (以下の場合は cnn.com に対して、Google も試しました)。しかし、firebug は何らかの理由でこれらのリクエストを赤で表示します。

ID 'container' の div は更新されません。そして、「ここにデータがあります」というコールバックが表示されません。

本当にシンプルでばかげたものに違いありません..しかし、1時間いじくり回した後、私は助けを求めて泣く準備ができています.

アドバイスをいただければ幸いです。ありがとう !

        <!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.comAJAX を使用して別のドメインからリソースをロードすることはできません。

于 2012-04-13T02:29:51.623 に答える
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 によって提供されました (ありがとう、紳士)。

友人のエリックが提案した回答に以下を追加します。

彼は基本的に私がコンソールをチェックすることを提案しました! そもそもこれをやるべきだった。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 に答える
0

これは、クロス ドメイン保護メカニズムです。

最良のオプションは、サーバーに単純な php ファイルを用意して、リモート サイトからコンテンツを要求し、それを送り返すことです。

AJAX.php

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

あなたJS

$ ('#container').load('ajax.php');
于 2012-04-13T02:38:15.947 に答える