在WebMethod中接收和操作通过Ajax发送的未知数量的名称/值

时间:2016-02-29 15:57:08

标签: jquery asp.net json ajax webmethod

我想向WebMethod发送包含一些数据的Ajax帖子。在原始代码中,我不知道有多少对数据,因为它们是动态的,但为了简化,我在这个例子中只添加了两个数据:

$.ajax({
    url: 'dama-actions.aspx/UpdateDataAdvanced',
    type: "POST",
    data: "{data: {'one':'onevalue', 'two':'twovalue'}}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
    alert(data.d);
    }
});

然后,使用WebMethod我需要读取数据以了解所有名称/值对。我在很多方面尝试但我没有成功,lstItems永远是空的。 我添加一个foreach和一个计数器来查看列表是否填充,但不是。

[WebMethod]
public static string UpdateDataAdvanced(object data)
{
    List<object> lstItems = new JavaScriptSerializer().ConvertToType<List<object>>(data);

    int counter = 0;

    foreach (string item in lstItems)
    {
        counter = counter + 1;
    }

    return counter.ToString();
}

最后一个用途是读取配对并创建一个SQL语句来更新表。我知道如何操纵我的SQL语句的数据,但此时我需要知道为什么我的WebMethod不收集数据。

感谢您的帮助,请原谅我的英语不好。

1 个答案:

答案 0 :(得分:0)

只需更改“数据”的类型即可。参数加入Dictionary<string, string>

public static string UpdateDataAdvanced(Dictionary<string, string> data)
{
    // Further code
}