2013-02-18 152 views
4

将C#数组传递给javascript变量的最佳方式是什么?将C#数组传递给Javascript

我有示例代码,但是这个返回字符是来自C#数组的字符,我想以正常的方式像javascript数组中的单词一样返回;

C#代码隐藏:

public string[] names = { "John", "Pesho", "Maria"}; 
public JavaScriptSerializer javaSerial = new JavaScriptSerializer(); 

javascript代码:

<script> 
    var a = '<%= this.javaSerial.Serialize(this.names) %>'; 
    for (var i = 0; i < a.length; i++) { 
     console.log(a[i]); 
    } 
</script> 

该脚本返回的所有单词从单个字符数组 “名字” 阵列。我想以正常的方式返回像[“约翰”] [“佩索”] ...

什么是将C#数组传递给JavaScript的最佳方式?

当我运行这段代码,我得到的Chrome浏览器的控制台以下:

[ Profile.aspx:44 
" Profile.aspx:44 
v Profile.aspx:44 
a Profile.aspx:44 
l Profile.aspx:44 
e Profile.aspx:44 
r Profile.aspx:44 
i Profile.aspx:44 
" Profile.aspx:44 
, Profile.aspx:44 
" Profile.aspx:44 
p Profile.aspx:44 
e Profile.aspx:44 
s Profile.aspx:44 
h Profile.aspx:44 
o Profile.aspx:44 
" Profile.aspx:44 
, Profile.aspx:44 
" Profile.aspx:44 
m Profile.aspx:44 
a Profile.aspx:44 
r Profile.aspx:44 
i Profile.aspx:44 
a Profile.aspx:44 
" Profile.aspx:44 
] 
+0

你是指单个字符串数组,比如'[“John”,“Pesho”,“Maria”]'? – 2013-02-18 17:55:01

+0

我希望“a”变量等于C#“names”数组 – TheChampp 2013-02-18 17:56:37

+0

“该脚本返回来自单个字符数组中”names“数组的所有单词”...你能告诉我们什么被渲染吗? – spender 2013-02-18 17:58:34

回答

8

更换

var a = '<%= this.javaSerial.Serialize(this.names) %>'; 

var a = <%= this.javaSerial.Serialize(this.names) %>; 

你一直在拖延所产生的JSON成JavaScript字符串,这将导致通过Serialize呼叫的每个字符的例子输出迭代。

+0

不错,现在工作! – TheChampp 2013-02-18 18:03:37

+0

还有一个问题。我看到“this.javaSerial.Serialize”返回字符串。这个“var a”如何接受数组? – TheChampp 2013-02-18 18:07:53

+0

它会返回一个'C#'字符串,当你做'<%= ... %>'时,asp.net会将字符串的内容输出到浏览器。 – Matthew 2013-02-18 18:09:06

0

C#代码将返回一个字符串,你必须先分析使用JSON.parse的字符串,然后遍历通过它:

var a = JSON.parse('<%= this.javaSerial.Serialize(this.names) %>'); 
for (var i = 0; i < a.length; i++) { 
    console.log(a[i]); 
} 

或者作为@Matthew说,不要引号,所以你不必解析它。