5

JSONを返すWebサービスがありますが、呼び出し元がコールバック関数を指定できるように変更して、次のように返されるようにします。JSON DATA to selectedFunction(JSON DATA); 現在JSONを返す方法は、オブジェクトのインスタンスを返し、.NETにシリアル化の魔法を実行させることです。文字列を返すだけに変更すると、関数の名前とデータを囲む角かっこを追加できますが、次に、文字列であり、引用符が不要なため、結果として引用符が返されます。では、どうすればそれを実現できますか?

この理由は、ここで説明されているように、APIを呼び出す開発者が動的スクリプトタグを使用できるようにするためですhttp://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag。 html

4

4 に答える 4

5

あなたが求めているテクニックはJSONP(JSON with Padding)と呼ばれています。

WCFサービスでJSONPをサポートする方法を参照してください。

これJsonPEncoderは、WCFBSONエンコーダーのラッピングエンコーダーです。ほとんどの呼び出しをラップされたエンコーダーに委任します。メソッドは WriteMesage、発信メッセージをコールバックメソッドで埋めるためにオーバーライドされています。は JsonBehaviorサービス操作で使用され、その操作でJSONPエンコーディングを有効にします。コールバック関数名を保持するURIのクエリパラメータは CallBack、動作のプロパティとして指定されます。

于 2009-07-24T18:40:41.627 に答える
5

WCF 4.0では、JSONPのサポートが追加されました。あなたは使用することができます

  <bindings>
    <webHttpBinding>
      <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
    </webHttpBinding>
  </bindings>

http://bendewey.wordpress.com/2009/11/24/using-jsonp-with-wcf-and-jquery/

于 2011-07-31T22:52:52.287 に答える
1

使用しているHTMLのバージョンはわかりませんが、使用したすべてのバージョンで、スクリプトタグのsrc属性はURLである必要があります。彼らはどういうわけか代わりに関数を使用しています、そして私はそれが機能しているとは思いません。

動的スクリプトタグが機能するのを見たことがありますか?

于 2009-07-24T16:47:00.107 に答える
1

古いスレッドであることは知っていますが、JSONPをサポートするようにWCFを変更することを主張しているようですが、それがポスターの要求とは明らかに異なる場合です。そして、私はこことforums.asp.netに投稿しましたが、誰も返信するのに時間がかかりませんでした。

私はそれをストリームとして返すことになりました。これにより、「raw」モードが使用され、WCFは応答に触れません。リンク: http: //blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx

于 2013-07-12T13:49:17.823 に答える