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