在Javascript中阅读C#字典

Jay*_*esh 13 javascript asp.net jquery json dictionary

我在C#(ASP.NET)中有一个字典变量.我想将此数据发送到Javascript.我正在使用此代码序列化它并发送到javascript.

Dictionary<string, string> chat;
chat = new Dictionary<string, string>();

chat.Add("Sam", "How are you?");
chat.Add("Rita", "I am good");
var serialize = new System.Web.Script.Serialization.JavaScriptSerializer();

Response.Write(serialize.Serialize(chat));
Run Code Online (Sandbox Code Playgroud)

在Javascript页面上,我使用此调用此页面;

 $.ajax({
 url: "TextChatCalls/getChat.aspx",
 type: "POST",
 context: document.body,
 success: function (response) {
          var Chats = response.split('\n')[0];
          alert(Chats);

          }
 });
Run Code Online (Sandbox Code Playgroud)

Chats var中的值是 {"Sam":"How are you?","Rita":"I am good"}

我不知道怎么在Chats中读取这个值.我可以无论如何将其转换为2D数组并将其读取为数组[0] [0],数组[1] [0]等?

谢谢.

编辑:另一个困惑是,从ASP.NET返回的响应对象包含

{"Sam":"How are you?","Rita":"I am good"}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form name="form1" method="post" action="getChat.aspx?Id=141755" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZJctiKZK4rXVndR3mbGssIarCrOF" />
</div>

    <div>

    </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

而不仅仅是{"Sam":"How are you?","Rita":"I am good"}预期的.因此我必须拆分响应对象var Chats = response.split('\n')[0];,使其成为一个字符串!

xan*_*tos 25

你读的是这样的:

alert(Chats["Sam"]);
Run Code Online (Sandbox Code Playgroud)

(就像一个C#字典:-).你使用像读/写它Chats["propertyName"])

或者,遍历每个值:

for (var c in Chats)
{
    if (Chats.hasOwnProperty(c)) 
    {
        alert(c + '   ' + Chats[c]);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这与C#不同.在C#c中将包含一个KeyValuePair<>包含键和值的.在Javascript c中只是关键,并获得您必须使用的价值Chats[c].

(推理hasOwnProperty是在这里http://yuiblog.com/blog/2006/09/26/for-in-intrigue/)

现在......如果你真的想分开它:

var array = [];

for (var c in Chats)
{
    if (Chats.hasOwnProperty(c)) 
    {
        array.push([c, Chats[c]]);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Joy你必须在`Response.Write()`之后做一个`Response.End()`,否则你将在JSON之后发送整个aspx页面:-) (2认同)