4

I have an array in my page_load in c# which i want to access in java script but don't know how to do that..

float [] energyArray = new float[count];
for (int i = 0; i < count; i++)
{
    energyArray[i] = energyObj[i].FwdHr;
}

Now i want to access in javascript in place of data-

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]
}]       
2
  • You could store the series as a string in a HiddenField then split it up in the javascript Commented May 30, 2013 at 10:21
  • you might using it for displaying high chart i guess, i normally use this in .cs page.... Page.ClientScript.RegisterStartupScript(typeof(Page), "abc", stringARRAY ); Commented Jun 13, 2013 at 13:32

5 Answers 5

8

A very easy way is to use the JavaScriptSerializer class to transform your C# object into 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
        }];
Sign up to request clarification or add additional context in comments.

7 Comments

where is javascript serializer.. to import it?? @Blade0rz
From the linked MSDN page: System.Web.Extensions (in System.Web.Extensions.dll)
not getting it.. do you know where to change target framework in vs2010?
thanks but what to do about error - javascriptSerializer not found? should i include it in javascript but how?
|
3

Changing your problem a little bit here...

Instead of manipulating an already existing script, consider constructing the whole javascript string block and then use 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);

Comments

0

you would need to pass the array to the client side (tha javascript part) somehow:

I would suggest making an ajax request to a page, that would return the serialized array or as @Blade0rz suggested, to output the serialized string directly to the page. to serialize the array to a JSON format you would call the methods of the JavaScriptSerializer class:

more on it here

Comments

0

Declare a HiddenField

    <asp:HiddenField id="myHiddenField" runat="server"

Set it's value to your array.Tostring() in the code behind Then in your javascript

    var h = document.getElementById('myHiddenField');
    //Should give you an array of strings that you can cast to integers 

Comments

0

C# code behind:

float [] energyArray = new float[count];
 public JavaScriptSerializer javaSerial = new JavaScriptSerializer();

Try This Code:

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

4 Comments

javaSerial is not a C# function
Because javaSerial is not a C# function and you are calling it in C# -- this won't compile.
@Hogan Refer this question and answer : stackoverflow.com/questions/14942385/…
That code has nothing to do with this answer, if you want to include all the code there then it might be a correct answer, but as it stands this answer is wrong and gets -1. Fix it and I will remove the downvote.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.