4

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>

このスクリプトは、単一のchar配列の「names」配列からすべての単語を返します。["ジョン"]["ペショ"]のように通常の方法で戻りたい...

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
] 
4

2 に答える 2

8

交換

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

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

結果のJSONをjavascript文字列に入れていたため、サンプル出力はSerialize呼び出しの各文字を反復処理していました。

于 2013-02-18T18:01:59.330 に答える
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が言ったように、引用符で囲まないでください。解析する必要がありません。

于 2013-02-18T18:01:18.430 に答える