0
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript" language="javascript">
$.ajax({
    type: "GET",
    cache: false,
    url: 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school',
    contentType: "application/json; charset=utf-8",
    success: function(msg) {
    alert(""+msg.length);
  },
  error: function (e) {
            alert("Failed to Get declassification details");
        }});
</script>
</body>
</html>

このAJAX呼び出しで何が問題になっているのか理解できSIMILARません。このフォーラムでいくつかの質問をしましたが、何も機能していませんでした。
Google検索からJSON形式で結果セットを取得する必要があります。

4

2 に答える 2

1

クロス ドメイン セキュリティ ポリシーが原因で、ブラウザーが要求を破棄しています。JSONP (dataType: "jsonp") を使用してみてください。通常、サード パーティの Web サイトへの Ajax リクエストは、セキュリティ上の制限により実行できません。ただし、この制限を回避するためのクライアント側の手法がいくつかあり、そのうちの 1 つが JSONP です。JSONP から得られないことの 1 つは、ネットワーク エラーの通知、または不適切な形式の応答に適切に応答するものであるため、他のドメインでサービスを呼び出す機能とのトレードオフとして受け入れる必要があります。

JSONP が機能する理由と仕組み:

  1. ブラウザーを使用すると、スクリプト要素が別のドメインからソースを取得できるようになります。
  2. URL のパラメーター (通常は「callback」という名前) で関数の名前が指定されている場合、要求されたページは関数呼び出しで JSON 応答をラップするように設定されます。
  3. dataType が 'jsonp' の場合、JQuery はラッピング関数を作成し、URL にコールバック パラメーターを追加し、要求した URL を指すスクリプト タグを DOM に挿入します。
  4. ブラウザーは応答をスクリプトとしてロードして実行し、JQuery が提供する関数を呼び出します。

応答の違いを参照してください: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school&callback=jquery_created_function

于 2011-02-17T08:50:38.700 に答える
1

dataType「contentType」の代わりに使用する必要があります。コードは次のとおりです。

$.ajax({
    type: "GET",
    cache: false,
    url: 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=school',
    dataType: "jsonp",
    success: function(msg) {
        alert("" + msg.responseData.results.length);
    },
    error: function(e) {
        alert("Failed to Get declassification details");
    }
});

これが実際のです。

ドキュメントから:

contentTypeString サーバーにデータを送信するときは、この content-type を使用します。

dataTypeString サーバーから返されると予想されるデータのタイプ。

于 2011-02-17T09:02:36.070 に答える