2009-12-02 3 views
9

Ho il codice sottostante di un servizio WCF abilitato per Ajax. Cosa posso fare per farlo restituire JSon al posto di XML? grazie.Come restituire Json dal servizio 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; 
    } 
} 

risposta

7

Hai provato:

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

grazie. Sì, ho provato ma ho ancora errore dal codice JQuery. ecco il codice che sto usando per chiamare il servizio: parametri var = 7 $ .ajax ({ tipo: "POST", url: "http: // localhost: 53153/TestWebServiceEightSite/CostService.svc", dati: parametri, ContentType: "application/json; charset = utf-8", dataType: "json", successo: la funzione (risultato) {. $ ("InputHTML") val (risultato); } , errore: function (e) { alert (e); } }); – Zinoo

+0

Hai guardato: http://www.west-wind.com/weblog/posts/324917.aspx? – tomasr

1

Se si desidera utilizzare il verbo POST come in $.ajax({ type: "POST", ...) dovrai markup il metodo con [WebInvoke(Method="POST"].

Dal momento che ha segnato in su con [WebGet] (che equivale a [WebInvoke(Method="GET")]) si dovrebbe chiamare il servizio utilizzando il verbo GET, per es .:

$.ajax({ type: "GET", ...) o utilizzare $.get(url, data, ...) (vedi jQuery.get per maggiori informazioni).

E sarà necessario impostare ResponseFormat su Json, come già indicato in tomasr.