将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”数组中的所有单词。我想像[“John”] [“Pesho”]那样以正常的方式回归......
将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 :(得分:8)
替换
var a = '<%= this.javaSerial.Serialize(this.names) %>';
与
var a = <%= this.javaSerial.Serialize(this.names) %>;
您将生成的JSON放入javascript字符串中,这会导致您的示例输出迭代Serialize
调用的每个字符。
答案 1 :(得分: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说,不要在它周围加上引号,所以你不必解析它。