使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod

我正在尝试使用jQuery Ajax将一个字符串参数数组传递给C#ASP.NET Web服务。 这是我的示例Web方法。 请注意,该函数接受可变数量的参数。 当我运行jquery时,Chrome的javascript控制台中出现500内部服务器错误。 我正在使用jquery 1.6.2和.NET3.5

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

这是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"); }  

任何帮助表示赞赏!

修改后的服务器端代码:

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

另外,在WebService类声明上面添加:

 [System.Web.Script.Services.ScriptService] 

修改了客户端代码:

  $(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"); } 

另外,在上面添加该脚本阻止对JSON2的引用,例如:

  

笔记:

  • 我已经在.NET 4下使用jQuery 1.6.4进行了测试。
  • 确保使客户端和服务器变量名保持同步:
    public string Concat(List arr )
    data: JSON.stringify({ arr : myCars })