2012-03-14 93 views
0

我想从C#动态传递一个双数组到一些JavaScript代码。下面是我现在怎么做:C#JavaScript序列化问题

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var jsLat = serializer.Serialize(lat); 

我随后致电InvokeScriptjsLat作为参数。

当我在JS端尝试lat.length时,我得到了正确的长度,但是当我尝试做lat[#]时,所有的值都会返回为undefined。

此外,当我做alert(lat.valueOf())我看到所有的值。

为什么所有的值都回到未定义?

+0

'lat [#]'应该是什么?这不是一个有效的js代码。 – kirilloid 2012-03-14 16:21:32

+0

什么是生成的来源? – SLaks 2012-03-14 16:21:58

+0

#是任何有效的索引(要完全清楚:lay [0],lat [1] ...) – user472875 2012-03-14 16:23:27

回答

0

您正在寻找所有现代浏览器支持的JavaScript端JSON.parse函数。除非您需要支持IE7/IE6,否则它是内置函数,对于IE6/7,有JavaScript实现(详情请查看http://json.org)。

var result = JSON.parse("{lat:1234, lon:567"}) 

如果您正在使用jQuery您可以使用jQuery.parseJSON支持所有浏览器。

+0

jQuery位做了诀窍,谢谢。我很惊讶C#没有直接的方法来做这个操作。 – user472875 2012-03-14 16:54:45

+0

@ user472875,C#**不会在浏览器中运行...并且如果需要服务器端,C#会在JavaScriptSerializer中对JSON进行反序列化。 – 2012-03-14 17:12:48

+0

我的意思是更像这样:http://www.codeproject.com/Articles/35373/VB-NET-C-and-JavaScript-communication#patjs – user472875 2012-03-14 17:28:10