[英]passing c# array to java script
我在c#中的page_load中有一个数组,我想在java脚本中访问但不知道如何做到这一点。
float [] energyArray = new float[count];
for (int i = 0; i < count; i++)
{
energyArray[i] = energyObj[i].FwdHr;
}
现在我想用javascript代替数据访问 -
series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}]
一种非常简单的方法是使用JavaScriptSerializer类将C#对象转换为JSON:
C#
float [] energyArray = new float[count];
for (int i = 0; i < count; i++)
{
energyArray[i] = energyObj[i].FwdHr;
}
使用Javascript:
var dataArray = <%=new JavaScriptSerializer().Serialize(energyArray);%>;
var series = [{
name: 'Tokyo',
data: dataArray
}];
在这里稍微改变你的问题......
不要操作已经存在的脚本,而是考虑构造整个javascript字符串块,然后使用Page.RegisterClientScriptBlock
。
http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx
int[] yourArray = new int[] { 1, 2, 3 };
string arrElements = string.Join(",", yourArray.Select(x => x.ToString()).ToArray());
string strJs = string.Format("var yourArray=[{0}]", arrElements);
RegisterClientScriptBlock("Test", strJs);
你需要以某种方式将数组传递给客户端(tha javascript部分):
我建议对页面发出一个ajax请求,它将返回序列化数组,或者@ Blade0rz建议,将序列化字符串直接输出到页面。 要将数组序列化为JSON格式,您可以调用JavaScriptSerializer类的方法:
更多关于它在这里
C#代码背后:
float [] energyArray = new float[count];
public JavaScriptSerializer javaSerial = new JavaScriptSerializer();
试试此代码:
<script>
var a = <%= this.javaSerial.Serialize(this.energyArray) %>;
for (var i = 0; i < a.length; i++) {
console.log(a[i]);
}
</script>
声明一个HiddenField
<asp:HiddenField id="myHiddenField" runat="server"
在你的javascript中将它的值设置为后面的代码中的array.Tostring()
var h = document.getElementById('myHiddenField');
//Should give you an array of strings that you can cast to integers
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.