2013-02-18 120 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說,不要引號,所以你不必解析它。