我有一个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));
在Javascript页面上,我使用以下代码调用此页面;
$.ajax({
url: "TextChatCalls/getChat.aspx",
type: "POST",
context: document.body,
success: function (response) {
var Chats = response.split('\n')[0];
alert(Chats);
}
});
聊天变量中的值为{"Sam":"How are you?","Rita":"I am good"}
我不知道如何在聊天中读取这个值。我可以把它转换成一个2D数组并读取为array [0][0],array [1][0]等吗?
谢谢。
编辑:还有一个令人困惑的地方是,从ASP.NET返回的response对象包含
{"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>
而不是像预期的那样只使用{"Sam":"How are you?","Rita":"I am good"}
,因此我必须将响应对象拆分为var Chats = response.split('\n')[0];
,这使得它成为一个字符串!
4条答案
按热度按时间az31mfrm1#
你读起来是这样的:
(so就像C#字典:-)。你可以用
Chats["propertyName"]
之类的东西读/写它)或者,遍历每个值:
注意,这与C#不同。在C#中,
c
将包含一个KeyValuePair<>
,该KeyValuePair<>
包含键和值。在Javascript中,c
只是键,要获得值,必须使用Chats[c]
。(the
hasOwnProperty
的推理在此为http://yuiblog.com/blog/2006/09/26/for-in-intrigue/)现在......如果你真的想平分的话:
jvlzgdj92#
只需将数据类型json添加到 AJAX 请求中
这将使
response
成为一个javascript对象,您可以像这样访问它把它分解成一个二维数组
aiazj4mn3#
我想这里最重要的一点是你要正确理解JavaScript客户端的情况。到达JavaScript客户端的数据类型是JSON字符串。JSON(= JavaScript Object Notation)可以直接被JavaScript解释。
JavaScript对象如下所示:
您可以通过某种类似于字典的方式访问JavaScript对象的属性,如
或直接(属性表示法)
相反,类似的JSON字符串如下所示
现在,要将JSON字符串转换为JavaScript对象,您需要解析它。jQuery已经为您完成了这一操作,否则您可以调用
JSON.parse(aJsonString)
,并将获得一个有效的JavaScript对象。这里我举一个简单的例子:http://jsbin.com/adejev/2/edit
tez616oj4#
对于ASP.NET核心,我在
cshtml
文件中使用了这个方法。基本上我将整个字典重新构建到Javascript中。使用这种方法的原因是因为我在Javascript中有一些子函数,这些子函数无法在按键等事件上使用动态参数调用服务器模型函数。检查浏览器获取的html页面: