0

httpハンドラーを呼び出す次のスクリプトがあります。httpハンドラーを呼び出し、フィドラーではJSONが正しく返されるのを確認できますが、このスクリプトは常にエラーブロックになります。何が悪いのかをどうやって判断できますか?

    <script type="text/javascript">
        function GetConfig() {
            $.getJSON("http://localhost:27249/Handlers/GetServiceMenuConfiguration.ashx", function(d) {
                alert("success");
            }).success(function(d) {
                alert("success");
            }).error(function(d) {
                alert("error");
            }).complete(function(d) {
                alert("complete");
            });
        }
    </script>
4

2 に答える 2

4

サーバー名(localhost)とポート(27249)が含まれているようです。Ajaxリクエストは、通常の場合にクロスオリジンリクエストを禁止する同一生成元ポリシーによって制御されます。(クロスオリジンコールを実行していない場合はhttp://localhost:27249、URLの一部を含める必要はありません。これにより、クロスオリジンコールを実行している可能性があります。)

ブラウザがクロスオリジンコールをサポートし、サーバーコードがCORSリクエストを適切に処理する場合は、クロスオリジンコールを実行できます。または、 JSON-Pの使用を検討することもできます。

于 2012-04-27T14:09:27.273 に答える
0

JQueryの組み込みJSONパーサーはかなり扱いにくいものであり、ヘッダーが完全に設定されていないと、適切にフォーマットされたJSONでさえ失敗することがあります。まず、type:textプロパティを使用して$ .ajaxリクエストを実行し、応答をログに記録します。これにより、接続の問題と解析の問題が区別されます。

$.ajax({
  dataType:'text',
  url: '/Handlers/GetServiceMenuConfiguration.ashx',
  success: function(data) {
      console.log(data.responseText);
  }
});

問題が接続であり、ドメイン間でJSONをリクエストする必要がある場合は、LAB、yep / nope、Frame.jsなどのライブラリローダーを使用することもできます。

于 2012-04-27T14:21:00.077 に答える