Solved

Combining asp and javascript

Posted on 2004-08-25
17
885 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 200 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 28

Assisted Solution

by:mmarinov
mmarinov earned 100 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 200 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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

738 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