Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Combining asp and javascript

Posted on 2004-08-25
17
Medium Priority
?
888 Views
Last Modified: 2012-06-22
I have the following aspx page:

<html>
<head>
<script language=javascript>
   function xx(a)
   {
      // whatever
   }
</script>
</head>
<body>
  .. form, contols, etc
  <%
      if (some_var_set_in_my_codebehind)
          xx(some_other_var)
  %>
</body>
</html>

But when I run it I am getting a compilation error from the xx() call:

Compiler Error Message: CS0103: The name 'xx' does not exist in the class or namespace 'ASP.addTrans_aspx' (name of my page)

Help!

0
Comment
Question by:RichardFox
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 4
  • +1
17 Comments
 
LVL 9

Expert Comment

by:crescendo
ID: 11897559
The "<%" means that you are running server-side code, and the xx function is client-side.
0
 
LVL 9

Assisted Solution

by:crescendo
crescendo earned 800 total points
ID: 11897574
Try something like

  <%
      if (some_var_set_in_my_codebehind)
          Response.Write "xx(some_other_var)"
  %>

This will put a call to xx at the same place in the output stream
0
 

Author Comment

by:RichardFox
ID: 11897617
Duh, I'm an idiot. But the solution will not work, some_other_var is a server side variable. This must be a common thing, to pass server side vars to a client-side function, how is it normally done?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 28

Assisted Solution

by:mmarinov
mmarinov earned 400 total points
ID: 11897649
Hi RichardFox,

the common way of doing this is by using

       String scriptString = "<script language=JavaScript>xx('" + some_other_var + "');";
       scriptString += "</script>";

           if(!this.IsClientScriptBlockRegistered("clientScript"))
              this.RegisterClientScriptBlock("clientScript", scriptString);


B..M
0
 
LVL 9

Expert Comment

by:crescendo
ID: 11898167
<<But the solution will not work>>

It should work, it will put a call to the client-side function into the out stream. You need:

    <script>
  <%
      if (some_var_set_in_my_codebehind)
          Response.Write "xx(" + some_other_var + ")"
  %>
   </script>

which, if "some_other_var" has the value 'abc' will end up in the browser as

  <script>
  xx(99)
  </script>
0
 
LVL 28

Expert Comment

by:mmarinov
ID: 11899970
and why it will not work ?
what will output my code ? :)
B..M
0
 
LVL 2

Accepted Solution

by:
Freak4VB earned 800 total points
ID: 11901119
I will put in a very simple solution for this. I am giving you  the exact code, copy paste it and it would work...any explainations required..........shoot up ! :-)

<html>
<head>
<script language=javascript>
   function xx(a)
   {
      // whatever
   }
</script>
</head>
<body>
  .. form, contols, etc
  <%
      if (some_var_set_in_my_codebehind) %>
<script language = 'javascript'>
          xx(<%=some_other_var%>)
</script>
</body>
</html>
this is assuming that your some_other_var is a server side variable, else u knw what to do, just remove the server side tags from around this some_other_var !!!
0
 

Author Comment

by:RichardFox
ID: 11902773
crescendo, this page:

test.aspx:

<html>
  <head>
    <title>ServerClientTest</title>
    <script language=javascript>
            myfunction(mystr)
            {      
                  alert(mystr);
            }
    </script>
  </head>
  <body>
  SOME TEXT      
  <script language=javascript>
  <%
      string s = "es tevi milu!";
      Response.Write("myfunction('"+s+"');");
  %>
  </script>
  </body>
</html>

doesn't work. THere are no errors, but myfunction() is never executed. I have no idea why, from the source code of the html in the browser, it looks like it should work. But it doesn't.

I am going to test mmarinov's code next...
0
 
LVL 9

Expert Comment

by:crescendo
ID: 11902931
Shouldn't it be "var" rather than "string" in

    string s = "es tevi milu!";
0
 
LVL 2

Expert Comment

by:Freak4VB
ID: 11903001
Hang on guys !

I just wanna comment on this last piece of code although it is apparent that no one is even looking at my posts :-)

Change the last part to this

<script language=javascript>
  <%
     dim s
      s = "es tevi milu!"
     Response.Write("myfunction('"+s+"');")
  %>
  </script>
This should take care of everything
This is because you are decalring this "s" in  server side script tags.
0
 

Author Comment

by:RichardFox
ID: 11903050
Au contraire Freak, I am reading your posts! But why should my server side code defautl to VB instead of C#? ANyway I put

<%@ Page language="c#" %>

At the top of this page, and my html source code in the browser looks like:

<html>
  <head>
    <title>ServerClient 0</title>
    <script language=javascript>
            myfunction(mystr)
            {      
                  alert(mystr);
            }
    </script>
  </head>
  <body>
  SOME TEXT      
  <script language=JavaScript>
  myfunction('es tevi milu!');
  </script>
  </body>
</html>

which looks like it should work but it doesn't! #$%@#!
0
 
LVL 2

Expert Comment

by:Freak4VB
ID: 11903094
hey man got it !!!

loll u wont b'live it !! change the declaration of myfunction dude !!
make it like this

<script language=javascript>
    function myfunction(mystr)
          {    
               alert(mystr);
          }
    </script>

Peace !!
0
 

Author Comment

by:RichardFox
ID: 11903171
omygod i'm an idiot!! yep that did it

one more question, for mmarinov why doesn't

<%@ Page language="c#" %>
<html>
<head>
    <title>ServerClient 2</title>
    <script language=javascript>
            function myfunction()
            {      
                  alert('es tevi milu!');
            }
    </script>
</head>
<body>
  SOME TEXT      
  <%
      String s = "<script language=JavaScript>myfunction();</script>";
      if (!this.IsClientScriptBlockRegistered("clientScript"))
                     this.RegisterClientScriptBlock("clientScript", s);
  %>
</body>
</html>

work?
0
 
LVL 2

Expert Comment

by:Freak4VB
ID: 11903282
I think I can answer that as well dude !!
Dont use these <% tags for the kind of operation u are attemting.
Instead wrap up ur code like this

<Script runat="server">

 String s = "<script language=JavaScript>myfunction();</script>";
     if (!this.IsClientScriptBlockRegistered("clientScript"))
                     this.RegisterClientScriptBlock("clientScript", s);

</Script>

Better yet if you can have it like this
<Script runat="server">

public void Page_Load()
{

 String s = "<script language=JavaScript>myfunction();</script>";
     if (!this.IsClientScriptBlockRegistered("clientScript"))
                     this.RegisterClientScriptBlock("clientScript", s);
}
</Script>

Make some adjustments for syntax errors as me is not really a C# guy  :-)

Reason- will tell u in my next post if this thing wud work :-)

Let the Gods Rule !!!
0
 

Author Comment

by:RichardFox
ID: 11921818
ok, great but what is the difference between <%  %> and <script runat="server"></script> ?
0
 
LVL 2

Expert Comment

by:Freak4VB
ID: 11961714
to be honest....I thought i had a theory about it but the more i think about it the more I get confused...i will try and look it up on the net and see if I can find out something about it.

And thanks for accepting my post as your answer !
0
 

Author Comment

by:RichardFox
ID: 11962289
ok, please let me know because I can't find anything on it
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question