我试图使用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"); } </script>
任何帮助是赞赏!
解决方法
修改后的服务器端代码:
[WebMethod] public string Concat(List<string> arr) { string result = ""; for (int i = 0; i < arr.Count; i++) { result += arr[i]; } return result; }
[System.Web.Script.Services.ScriptService]
$(document).ready(function () { var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Volvo"; myCars[2] = "BMW"; $.ajax({ type: "POST",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的引用,例如:
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
笔记:
>我已经测试了这个在.NET 4和使用jQuery 1.6.4.>确保保持客户端和服务器变量名同步:public string Concat(List< string> arr)data:JSON.stringify({arr:myCars})