2012-01-30 7 views
2

.NETでJSONPメッセージを解析し、それらのメッセージでJSONを見つける必要があります。有効なJSONPメッセージを記述する最新の仕様はありますか?有効なJSONPと考えられるものは何ですか?

JSONPメッセージにほぼすべてのJavaScriptコードが含まれる最初のJSONPプロポーザルを指定してBob Ippolitoがthis blog post(2005年以降)を見つけました。

json-p.orgでおそらくmore recent specificationが見つかりました。要求するURIパラメータcallbackで指定された関数への関数呼び出しのみが許可されています。最後

Wikipediaは言う:

パディング(接頭辞)は、典型的には、ブラウザの実行コンテキスト内で定義されるコールバック 関数の名前であるが、 それはまた、AN変数代入してもよいですif文、またはその他の JavaScriptステートメント。 JSONP要求への応答(すなわち、JSONP使用パターンに続く 要求)はJSONではなく、 はJSONとして解析されません。返されるペイロードには任意のJavaScriptの 式を指定できます。JSONをまったく組み込む必要はありません。しかし、 は、通常、JSON形式のデータで 関数を呼び出すJavaScriptフラグメントです。

有効なJSONP応答とJavaScript構造体が許可される理由は何ですか?現在のブラウザでは(コンテンツタイプがapplication/javascriptであるため)、JavaScriptコードが必要ですか?

答えて

2

JSONPは言語ではなくパターンです(JSONの場合のように)、標準はありません。

名前は、関数呼び出しでラップされた有効なJSONオブジェクトを取得することを意味します。

実際に、応答に何が含まれるかを示す「仕様」は、APIyou're subscribing toto documentのものでなければなりません。

2

文字通り有効なJavaScriptである可能性があるのは、新しいスクリプトタグをページに追加するためです。 callback({...JSON...})が表示されるのは、スクリプトタグのURLに渡したコールバック関数を呼び出すためです。しかし、Webアプリケーション全体の関数呼び出しなどを同じペイロードに入れることができます。

JSONPの代替として、クロスソースリソース共有を検討する必要があります。通常のAJAXはいくつかのHTTPヘッダーを追加して原点を越えて直接話すことができます。これはJSONPの優れた代替方法で、GETリクエストの制限(すべてではないにしてもほとんどのバージョンのIEでは2083文字のURLの制限)に悩まされています。

関連する問題