Passing array of strings to webmethod with variable number of arguments using jQuery AJAX Passing array of strings to webmethod with variable number of arguments using jQuery AJAX arrays arrays

Passing array of strings to webmethod with variable number of arguments using jQuery AJAX


Revised server-side code:

[WebMethod]public string Concat(List<string> arr){    string result = "";    for (int i = 0; i < arr.Count; i++)    {        result += arr[i];    }    return result;}

Also, add this above your WebService class declaration:

[System.Web.Script.Services.ScriptService]

Revised client-side code:

    $(document).ready(function () {        var myCars = new Array();        myCars[0] = "Saab";        myCars[1] = "Volvo";        myCars[2] = "BMW";        $.ajax({            type: "POST",            url: "WebService.asmx/Concat",            data: JSON.stringify({ arr: myCars }),            contentType: "application/json; charset=utf-8",            dataType: "json",            success: onSuccess,            failure: onError        });    });    function onSuccess(response) {        alert(response.d);    }    function onError() {        alert("fail");    }

Also, add above that script block a reference to JSON2, such as:

<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>

Notes:

  • I have tested this under .NET 4 and using jQuery 1.6.4.
  • Make sure you keep the client and server variable names in sync:
    public string Concat(List<string> arr)
    data: JSON.stringify({ arr: myCars })