将数据从ajax发送到c#server

时间:2013-07-30 08:17:15

标签: c# asp.net ajax asp.net-ajax

我在cliend方面创建了一个字典,并希望在服务器端发送它。在我的脚本中,字典是正确创建的,但我不确定是否会删除我的ajax代码。

$("#btnSubmit").click(function () {
        var sendList = new Array();
        var elems = $(".elemValue");
        $.each(elems, function (key, value) {
            if (value.attributes.elemName.nodeValue != "PhotoImg") {
                sendList[value.attributes.elemName.nodeValue] = value.attributes.value.nodeValue;
            }
        });

        var data = JSON.stringify({dict : sendList});

        $.ajax({
            type: "GET",
            url: "dataloader.aspx/GetData",
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result){
                alert(result.d);
            }
        });
        });

在服务器端我写了

[System.Web.Services.WebMethod]
    public static string GetData(Dictionary<string,string> dict)
    {
        Dictionary<string, string> serverDict = new Dictionary<string, string>();
        serverDict = dict;
        string result = "";
        foreach (var value in dict)
        {
            result += "The key is:" + value.Key + "The value is:" + value.Value;
        }

        return result;
    }

我的错误在哪里,我该如何解决?请帮助,=)

2 个答案:

答案 0 :(得分:1)

我认为不可能从JSON创建一个Dictionary。至少没有很多工作。我会尝试将其从Dictionary更改为List<KeyValuePair<string,string>>,看看它是否会反序列化。

KeyValuePair

的参考

如果你仍然需要字典,那么一旦你完成了它,你可以很容易地转换它。

var Dictionary = new Dictionary<string,string>();
foreach(var KVP in List) Dictionary.Add(KVP.Key, KVP.Value);

答案 1 :(得分:0)

这里有几件事:

  1. 您需要明确允许GET动词:

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod(UseHttpGet=true)]
    
  2. 您正在从服务器返回纯文本,这意味着这一行:

    dataType: "json"
    

    不会让jQuery正确解析响应。您应该删除此行,或以JSON格式构建响应。