我在我的aspx页面上使用jquery ajax方法,它将在后面的代码中调用webmethod。当前webmethod需要几个参数,例如名字,姓氏,地址等,我使用jquery ajax方法传递这些参数
data:JSON.stringify({fname:firstname,lname:lastname,city:city})
现在我的要求已经改变,要传递的参数的数量和类型对于 ex. 参数组合可以是类似 fname,city 的数量和类型 或 fname,city 或 city,lname 或 fname,lname,city 或其他东西。因此 webmethod 应该接受任何数字参数。我想到使用数组来执行此操作,如所述 here .
但我不明白如何识别已传递哪些参数以及传递了多少参数 到 webmethod 将数据插入/更新到数据库。请问有人可以帮助我吗?
谢谢
最佳答案
您可以在客户端使用复杂类型来匹配服务器端包含一个或多个参数数组的对象。
非常粗略的例子
(服务器端)
//class declaration
public class MyObject
{
//values
string[] Keys;
string[] Values;
//methods
public void Add()
{...}
}
//web service - WebService.asmx
[WebMethod]
public void AddObject(MyObject NewObject)
{
NewObject.Keys.Length = ...;
NewObject.Add();
...
}
(客户端)
var MyObject= { };
MyObject.Keys = { $("#key1").val(), $("#key2").val(), ... };
MyObject.Values = { $("#val1").val(), $("#val2").val(), ... };
var DTO = { 'MyObject' : MyObject};
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "WebService.asmx/AddObject",
data: JSON.stringify(DTO),
dataType: "json"
});
上面的示例将在客户端序列化您的对象,您将能够在服务器端访问该对象,就像您使用 new() 创建它一样。
关于asp.net - 如何从Web方法中的动态参数列表中获取各个参数,使用jquery ajax方法发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2818343/