11

JSONデータを提供するURLがあります...

JavaScript からその URL にアクセスしたいのですが、次のエラーが発生しています。

プレーン テキスト ドキュメントの文字エンコーディングが宣言されていませんでした。ドキュメントに US-ASCII 範囲外の文字が含まれている場合、一部のブラウザー構成では、ドキュメントが文字化けしてレンダリングされます。ファイルの文字エンコーディングを転送プロトコルで宣言する必要があるか、ファイルがエンコーディング シグネチャとしてバイト オーダー マークを使用する必要があります。

コード :

function a(){
$.getJSON(url,function(data) { alert(data);});
}

完全なコード:

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></meta>
<script language="JavaScript" type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script>

function a(){
$.getJSON(url,function(data) { alert(data);});
}
</script>
</head>
<body>
<input type="text"/>
<input type="submit" value="search" onclick="a()"/>
</body>
</html>
4

1 に答える 1

11

あなたのコードは正しいようです。

を作っていfully qualified URL callますか?

完全修飾 URL 呼び出しを行う場合は、次のことを確認してください。

  1. 同じドメイン(同じサーバー)を呼び出しています。別のドメインに対して単純な JSON 呼び出しを行うことはできません。
  2. クロスドメイン呼び出しを使用する場合は、JSONp を使用する必要があります

更新: クロスドメイン コールであるため、これは機能していません。

これを回避する

JavaScript

関数を作成する

function getMyData(data) {
    alert(data);
    //Do the magic with your data
}

サーバ側

サーバー側では、データを関数構文内にラップします

getMyData("Enter your data here");

JavaScript

次に、スクリプト タグを作成し、クロスドメイン ページへのリンクを追加します。

 <script type="text/javascript"
         src="cross ref url">
 </script>

参考:ウィキペディア

編集: 別のオプションは、ドメインにプロキシを作成することです。つまり、クロスドメイン ページを内部的に呼び出すページをドメイン内に作成し、同じデータを Ajax 呼び出しに返します。

于 2013-01-21T06:34:56.270 に答える