Javascript Array as WCF Webservice Parameter

后端 未结 2 1789
小蘑菇
小蘑菇 2020-12-12 03:08

I need to pass a simple Javascript array to my wcf ajax webservice:

var array = new Array();
array[\"ParamA\"] = \"xyz\";
array[\"12344\"] = \"9\";
myNamespa         


        
相关标签:
2条回答
  • 2020-12-12 03:41

    I was able to find the solution myself:

    [OperationContract]
    [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    public void DoSomething(Dictionary<string, object> values)
    

    must be called in javascript like this:

    var params = [{ "Key": "A", "Value": 5}, { "Key": "B", "Value": "Test}]

    $.ajax({
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        data: '{"values":' + JSON.stringify(params) + '}',
        ...
    

    This can of course be simplified:

    var parameters = [{ "A": 5}, { "B": "Test"}];
    
    var dictionary = new Array();
    for (var i in parameters) {
       var key = Object.keys(args[i])[0];
       var value = args[i][key];
       dictionary.push({ "Key": key, "Value": value });
    } 
    
    $.ajax({
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        data: '{"values":' + JSON.stringify(dictionary) + '}',
        ...
    
    0 讨论(0)
  • 2020-12-12 03:59

    Take Javascript object

    var obj = {
        Key: "xyz",
        Value: "9"
    };
    
    Array objArray = new Array();
    objArray.push(obj); 
    
    $.ajax({
    //Add necessary detail here               
    data:  JSON.stringify(objArray);
    });
    

    In service layer replace object with array of NameValuePair

    public void DoSomething(NameValuePair[] values)
    {}
    
    [DataContract]
    public class NameValuePair
    {
    [DataMember]
    public string Key {get;set;}
    [DataMember]
    public string Value {get;set;}
    }
    
    0 讨论(0)
提交回复
热议问题