0

クライアント側で辞書を作成し、それをサーバー側に送信したいと考えています。私のスクリプトでは、辞書は正しく作成されていますが、私の 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;
    }

間違いはどこにあり、どうすれば修正できますか? 助けてください=)

4

2 に答える 2

1

JSON から Dictionary を作成することはできないと思います。少なくとも、多くの作業がないわけではありません。Dictionarya からa に変更して、List<KeyValuePair<string,string>>逆シリアル化されるかどうかを確認します。

KeyValuePairのリファレンス

それが済んだら、Dictionary がまだ必要な場合は、かなり簡単に変換できます。

var Dictionary = new Dictionary<string,string>();
foreach(var KVP in List) Dictionary.Add(KVP.Key, KVP.Value);
于 2013-07-30T08:24:06.957 に答える
0

ここにいくつかのことがあります:

  1. GET 動詞を明示的に許可する必要があります。

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod(UseHttpGet=true)]
    
  2. サーバーからプレーンテキストを返しています。これは、次の行を意味します。

    dataType: "json"
    

    jQuery に応答を正しく解析させません。この行を削除するか、JSON 形式で応答を作成する必要があります。

于 2013-07-30T08:24:05.050 に答える