使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod
Posted
技术标签:
【中文标题】使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod【英文标题】:Passing array of strings to webmethod with variable number of arguments using jQuery AJAX 【发布时间】:2011-12-19 18:15:12 【问题描述】:我正在尝试使用 jQuery Ajax 将字符串参数数组传递给 C# ASP.NET 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>
感谢任何帮助!
【问题讨论】:
或许您可以serialize 数组,然后在服务中对其进行反序列化。 【参考方案1】:修改后的服务器端代码:
[WebMethod]
public string Concat(List<string> 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 的引用,例如:
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
注意事项:
我已经在 .NET 4 下使用 jQuery 1.6.4 对此进行了测试。 确保客户端和服务器变量名称保持同步:public string Concat(List<string> <strong><em>arr</em></strong>)
data: JSON.stringify( <strong><em>arr</em></strong>: myCars )
【讨论】:
我现在正在尝试扩展它以与 jqGrid 一起使用,但它不起作用,有什么想法吗?我在这里提出了另一个问题:***.com/questions/7975662/… 我必须将我的服务器端方法设为静态才能使其工作。示例:公共静态字符串 Concat(List以上是关于使用jQuery AJAX将字符串数组传递给具有可变数量参数的webmethod的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jquery Ajax 将数组传递给 asp.net C# 控制器
使用 ajax 导入 JS 数组以传递给 JQuery 中的函数/插件