2009-12-02 2 views
9

У меня есть кусок кода ниже шаблона службы WCF с поддержкой Ajax. Что я могу сделать, чтобы вернуть JSon вместо XML? спасибо.Как вернуть Json из службы WCF?

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 $ .ajax ({ типа: "POST", URL: "HTTP: // локальный: 53153/TestWebServiceEightSite/CostService.svc", данные: параметры, CONTENTTYPE: "приложения/JSON; кодировка = UTF-8", Datatype: "JSON", успех: функция (результат) {. $ ("InputHTML") вал (результат); } , ошибка: функция (e) { предупреждение (e); } }); – Zinoo

+0

Вы посмотрели: http://www.west-wind.com/weblog/posts/324917.aspx? – tomasr

1

Если вы хотите использовать глагол POST, как в $.ajax({ type: "POST", ...) вам нужно будет разметить ваш метод с [WebInvoke(Method="POST"].

Так как вы пометили его с [WebGet] (что эквивалентно [WebInvoke(Method="GET")]), вы должны обратиться в службу, используя глагол GET и т.д .:

$.ajax({ type: "GET", ...) или использовать $.get(url, data, ...) (см jQuery.get для получения дополнительной информации).

И вам нужно установить ResponseFormat в Json, как уже указывал tomasr.

Смежные вопросы