2010-10-29 3 views
2

Je sais qu'il y a des questions ici demandant exactement la même chose, mais malgré que je les lis il me manque encore quelque chose et j'espère que vous pouvez aider!Passer l'objet au service WCF en utilisant JQuery

C'est très simple, en utilisant le modèle WCF qui est ajouté par VS!

Interface:

[OperationContract] 
[WebInvoke(Method = "POST", 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat= WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped)] 
CompositeType GetDataUsingDataContract(CompositeType composite); 

Mise en œuvre:

public CompositeType GetDataUsingDataContract(CompositeType composite){ 
    if (composite == null) 
    { 
     throw new ArgumentNullException("composite"); 
    } 
    if (composite.BoolValue) 
    { 
     composite.StringValue += "Suffix"; 
    } 
    return composite; 

}

Javascript:

$.ajax({ 
    type: "POST", 
    url: "http://localhost:1545/Service1.svc/GetDataUsingDataContract", 
    data: JSON.stringify(compType), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    processdata: true, 
    success: function (msg) { 
     $("#txtTest").val(message.BoolValue + " : " + message.StringValue); 
    }, 
    error: function (xhr, errorMsg, thrown) { 
     $("#error").html(xhr.responseText); 
} 

});

L'erreur que je reçois est: Le serveur a rencontré une erreur lors du traitement de la demande. Le message d'exception est 'La valeur ne peut pas être nulle. Nom du paramètre: composite '. Donc, la valeur n'est pas transmise, son null quand il arrive au service WCF.

* Note: Je l'ai essayé d'appeler des méthodes qui prennent une chaîne et retourne le type composite, qui fonctionne très bien *

Thx à l'avance pour votre aide

+0

J'ai le même problème .. avez-vous obtenu une résolution? –

+0

Si vous annulez if (composite.BoolValue) avez-vous le même problème –

Répondre

0

Voici comment construire COMPTYPE de sorte que JSON.stringify() sera produire ce que le service attend:

var compType = { composite: { StringValue: "MyString", BoolValue: true } }; 
Questions connexes