使用jQuery AJAX将可变参数数目的字符串数组传递给webmethod
我正在尝试使用jQuery Ajax将字符串参数数组传递给C#ASP.NET
Web服务。这是我的示例Web方法。请注意,该函数接受可变数量的参数。运行jquery时,我在Chrome的javascript控制台中收到500
Internal Server Error。我正在使用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;
}
另外,在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> **_arr_** )
data: JSON.stringify({ **_arr_** : myCars })
以上是 使用jQuery AJAX将可变参数数目的字符串数组传递给webmethod 的全部内容, 来源链接: utcz.com/qa/403401.html