0
$.getJSON("http://www.geoplugin.net/json.gp?ip=117.201.92.17",function(data){alert(data);});

このコードは正常に実行されますが、URLの応答は空です。ただし、URLをコピーして貼り付けて同じURLにアクセスすると、機能します。なぜ何かアイデアはありますか?

4

2 に答える 2

3

このページによると(リンク)

AJAXとエラー:無効なラベル

たとえば、jQueryを使用してJSON WebサービスへのAJAX呼び出しを行う場合、Javascriptエラーが表示される可能性があります。エラー:無効なラベルこのエラーを排除するには、タグjsoncallback =?JSONWebサービスへのjQueryAjax呼び出しを行うときにURLに追加します。

$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
function (data) {
  for (var i in data) {
      document.write('data["i"] = ' + i + '<br/>');
  }
);

そこで、それを追加して、ここ(リンク)にフィドルを作成し、それが機能していることを示しました。

于 2011-01-21T16:59:22.260 に答える
0

http://api.jquery.com/jQuery.getJSON/状態のドキュメント:

重要:jQuery 1.4以降、JSONファイルに構文エラーが含まれている場合、リクエストは通常​​サイレントに失敗します。このため、JSONデータを頻繁に手動で編集することは避けてください。JSONは、JavaScriptのオブジェクトリテラル表記よりも厳密な構文規則を備えたデータ交換形式です。たとえば、JSONで表されるすべての文字列は、プロパティであろうと値であろうと、二重引用符で囲む必要があります。JSON形式の詳細については、http://json.org/を参照してください。

データは有効なJSON形式で返されていますか?次の別のアプローチを試してみませんか。

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

このようにして、json dataTypeを削除し、jsonであるかどうかに関係なく、呼び出しが機能していることを確認できます。

また、ブラウザのセキュリティ制限により、ajaxリクエストには同一生成元ポリシーが適用されることを忘れないでください。リクエストは、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。

于 2011-01-21T16:56:17.783 に答える