I'm trying to pass an array of string parameters to a C# ASP.NET web service using jQuery Ajax. Here is my sample web method. Note that the function accepts a variable number of parameters. I get a 500 Internal Server Error in Chrome's javascript console when I run the jquery. I'm using jquery 1.6.2 and .NET3.5
[WebMethod]
public string Concat(params string[] arr)
{
    string result = "";
    for (int i = 0; i < arr.Length; i++)
    {
        result += arr[i];
    }
    return result;
}
Here is the jquery:
$(document).ready(function() {
    var myCars=new Array(); 
    myCars[0]="Saab";      
    myCars[1]="Volvo";
    myCars[2]="BMW";
    $.ajax({
        type: "POST",
        url: "WebService.asmx/Concat",
        data: {arr: myCars},        //can't figure out what to put here     
        success: onSuccess,
        Error: onError
    });
});
function onSuccess()
{
    alert("testing");
}
function onError() 
{
    alert("fail");
}
</script>
Any help is appreciated!
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:
public string Concat(List<string> arr)data: JSON.stringify({ arr: myCars })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With