2012-03-30 18 views
1

私はajaxサービスを動作させることができません。 $.get("http://google.com")への簡単なクラスは機能しません。また、このコードは、あまりにも、動作しません:jQuery.ajax - なぜ動作しませんか?

test.htmlに保存されて
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <script> 

     $.ajax({ 
      url:  "http://google.com", 
      dataType: "html", 
      success: function(data, status) { 
       console.log("Success:"); 
       console.log(" Data: " + data); 
       console.log(" Status: " + status); 
      }, 
      error:  function(request, status, error) { 
       console.log("Error:"); 
       console.log(" Request: " + request); 
       console.log(" Status: " + status); 
       console.log(" Error: " + error); 
      }, 
     }); 

     </script> 
    </body> 
</html> 

これは、コンソール上に出力されます:

Error: 
    Request: [object Object] 
    Status: error 
    Error: 

そして、これらは、返されたオブジェクトの、私は推測する、重要な値は次のとおりです。

readyState   0 
responseText  "" 
status    0 
statusText   "error" 

はなぜリクエストが動作しませんか? ありがとう、

+0

jQueryはクロスドメインリクエストに問題があります –

答えて

3

あなたはそのようなクロスドメインスクリプトにアクセスするためにAJAXを使用することはできません。これは、Same Origin Policyである - セキュリティ上の理由から実装されました何か:

このメカニズムは、広範囲のサーバーの行為として、 認証されたユーザセッションを維持するためにHTTPクッキーに依存し、現代のWeb アプリケーションのための特定の意義を負担しますHTTP Cookie の情報に基づいて、機密情報を明らかにしたり、状態を変更する アクションを実行します。無関係の サイトによって提供されるコンテンツ間の厳密な分離は、データの損失を防ぐためにクライアント側で維持する必要があります。 機密性または完全性。

だから、あなたは、いくつかのオプションがあります。

  1. ちょうどサードパーティのサイト/アプリケーション/スクリプトと通信できるサーバー上
  2. コールスクリプト
  3. 使用独自のサーバー上でスクリプトを呼び出しますコールバック形式としてJSONPまたはXMLのいずれかです。
1

同じorigin-policyのため、別のドメインに要求することはできません。詳細については、http://api.jquery.com/jQuery.ajax/を参照してください。

+0

正確なコードは 'XMLHttpRequestが読み込めません。 'あなたがURLを変更すると:http://jsfiddle.net/xEJWc/ – m90

+0

@ m90 Googleがクロスドメインリクエストとstackoverflow does notを許可するようにヘッダーを設定しているので、イメージします。 – ManseUK

+3

違い、google.comはstackoverflow.comが "200 Ok"を送信している間に、 "301 Moved permanently"リダイレクト要求。 – Niko

1

JSONPを使用してドメイン間通信を実現できます。

http://en.wikipedia.org/wiki/JSON#JSONP

しかし、プレーンHTMLは、あなたはヨーヨーが同じドメイン上にある持っています。

$.ajax({ 
     url:  "http://google.com", 
     dataType: "jsonp", 
     success: function(data, status) { 
      console.log("Success:"); 
      console.log(" Data: " + data); 
      console.log(" Status: " + status); 
     }, 
     error:  function(request, status, error) { 
      console.log("Error:"); 
      console.log(" Request: " + request); 
      console.log(" Status: " + status); 
      console.log(" Error: " + error); 
     }, 
    }); 

EDIT:

しかし、あなたのURLが有効なフォーマット済みJSONを返さない場合は、あなたの要求は失敗します。実施例のチェックのために :

http://jsfiddle.net/S3tAR/1/

関連する問題