2012-04-27 16 views
0

httpハンドラを呼び出す次のスクリプトがあります。それはhttpハンドラを呼び出し、fiddlerでは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> 
+0

郵送でご返信いただけますか?ポストバックの有効なJSONですか?ポストバックのヘッダーからのヘッダーは素晴らしいでしょう。 –

+0

JSONLintを使用し、返されたJSONが整形式かどうかを確認します – fcalderan

+1

エラーハンドラには3つの引数があり、そのうちの2つはエラーの内容を調べるのに便利です。彼らは何を示していますか? –

答えて

4

私はあなたのサーバー名(localhost)とポート(27249)を含めていることがわかります。 Ajaxリクエストは、Same Origin Policyによって制御され、通常の場合はクロスオリジンリクエストを禁止します。 (発信元を問わない場合は、URLの部分にhttp://localhost:27249を含める必要はありません)。

クロスオリジンを使用できますブラウザがそれらをサポートしていて、サーバーコードがCORS要求を適切に処理している場合は、呼び出します。代わりに、JSON-Pを使用して見ることもできます。

+0

ローカルホスト上で実行されているハンドラとサイトの両方が同じドメインとして扱われると仮定しました。 Webページをハンドラと同じプロジェクトに配置します。これは私がやった最初のウェブ開発者です。これまで(通常は.net dev) –

+1

@MrShoubs:同じドメインに加えて、AJAXコールも同じポートにある必要があります。 –

+0

ありがとう@ロケット私は多くのものが私を捕まえているのを発見しています。 –

0

JQueryに組み込まれているJSONパーサーはかなり厄介です。ヘッダーが完全に設定されていないと、JSONがうまくフォーマットされないこともあります。まず、type:textプロパティを持つ$ .ajaxリクエストを実行し、レスポンスを記録します。これにより、接続の問題と解析の問題が区別されます。

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

問題は、接続があり、そしてあなたは、あなたがまた、LABのようなライブラリローダーを使用することができ、ドメイン間でJSONを要求する必要がない場合は

、うん/いいえまたは Frame.js

+1

*「JQueryの組み込みJSONパーサーはかなり複雑で、ヘッダーが完全に設定されていないとJSONが失敗することもあります」*いいえ、jQueryにJSONを指定すると整形されたJSONが解析されます。 2つの方法のいずれかでそれを行います:1.正しい 'Content-Type'ヘッダを返します。 2. jQueryに、JSONが 'dataType'オプションを介して返されることを期待している場合は、' Content-Type'ヘッダを無視します。 –

+0

あなたのコメントをありがとうTJと私はあなたの意見を大いに尊重しますが、走行距離は異なる場合があります。 $ .getJSONが形式の整ったJSONを解析しないようにするために、サーバー上で間違って設定できるものが数多くあります。これが同じ質問が何度も繰り返される理由の1つです。 – BishopZ

+1

@ Bishop:あなたは私の1人でさえ教えてくれますか?率直に言って、そんなことは一度も聞いたことがない。私は**たくさんの**の人々がJSONエラーを尋ねているのを見ています。それらは、ほとんどの場合、JSON、SOP、または間違った形でコールすることになります。 –

関連する問題