2010-10-29 106 views
2

我知道在這裏問的問題完全一樣,但儘管我讀了它們,但我仍然錯過了一些東西,希望你能幫上忙。使用JQuery將對象傳遞給WCF服務

這很簡單,使用VS添加的WCF模板!

接口:

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

實現:

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); 
} 

});

我得到的錯誤是: 服務器在處理請求時遇到錯誤。異常消息是'值不能爲空。參數名稱:複合'。

所以這個值沒有被傳遞,當它到達WCF服務時它的值爲null。

*注:我已經打過電話說有一個字符串,返回複合類型的方法,工作正常*

THX在您的幫助

+0

我有同樣的問題..你有沒有得到一個解決方案? – 2011-03-30 16:02:05

+0

如果取消(composite.BoolValue)是否有同樣的問題 – 2011-09-21 11:33:09

回答

0

下面是如何構建compType使JSON.stringify()會產生什麼服務期待:

var compType = { composite: { StringValue: "MyString", BoolValue: true } }; 
相關問題