2009-12-02 8 views
9

テンプレートAjax対応のWCFサービスの下にあるコードがあります。私はXMLの代わりにJSonを返すために何をすることができますか?ありがとう。 WCFサービスからJsonを返す方法は?

using System; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 

[ServiceContract(Namespace = "WCFServiceEight")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class CostService 
{ 
    // Add [WebGet] attribute to use HTTP GET 
    [OperationContract] 
    [WebGet] 
    public double CostOfSandwiches(int quantity) 
    { 
     return 1.25 * quantity; 
    } 
} 

答えて

7

あなたが試してみました:

[WebGet(ResponseFormat= WebMessageFormat.Json)] 
+0

ありがとうございました。 はい、私は試みましたが、私はまだJQueryコードからエラーを取得します。 のvarパラメータ= 7 $アヤックス({ タイプ::ここで私は、サービスを呼び出すために使用していたコードは、 "POST"、 URL: "のhttp:// localhostを:53153/TestWebServiceEightSite/CostService.svc"、 データ:パラメータ、 のcontentType: "アプリケーション/ JSON;のcharset = UTF-8"、 データ型:{。 $( "InputHTML")のval(結果); }: "JSON"、 成功関数(結果) 、 エラー:機能(e){ アラート(e); } }); – Zinoo

+0

見たことがありますか:http://www.west-wind.com/weblog/posts/324917.aspx? – tomasr

1

をあなたは$.ajax({ type: "POST", ...)のようにPOST動詞を使用する場合は、[WebInvoke(Method="POST"]とあなたの方法をマークアップする必要があります。

あなたは([WebInvoke(Method="GET")]と同等です)[WebGet]とそれをマークアップされているので、あなたがGET動詞を使用してサービスを呼び出す必要があり、例えば:

$.ajax({ type: "GET", ...)または$.get(url, data, ...)を使用します(詳細はjQuery.getを参照してください)。

そして、既に指摘されているtomasrのように、ResponseFormatをJsonに設定する必要があります。