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