473,473 Members | 1,949 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

calling functions from cgi

If I've loaded a set of functions in a webdocument like this:
<script language="JavaScript" type="text/javascript"
src="/js/foo.js"</script>

Shouldn't I be able to call a function from inside foo.js later in that
same document by doing something like this:

<script language="JavaScript" type="text/javascript">myfunction(myargs)
</script>

Even though it's generated from a CGI script? The all loaded javascript
files have the same scope do they not? It's not like the functions in
foo.js available only to other functions within that file? Right?
Jan 30 '06 #1
10 2437
Tony Rice wrote:
If I've loaded a set of functions in a webdocument like this:
<script language="JavaScript" type="text/javascript"
Language is deprecated, drop it.

src="/js/foo.js"</script>

Shouldn't I be able to call a function from inside foo.js later in that
same document by doing something like this:

<script language="JavaScript" type="text/javascript">myfunction(myargs)
</script>
Yes.
Even though it's generated from a CGI script? The all loaded javascript
What is generated from CGI - the script or the HTML document?

files have the same scope do they not? It's not like the functions in
foo.js available only to other functions within that file? Right?


Yes.

Do you get errors? What is the error message? Is the error because the
file isn't loaded, or because you are trying to manipulate objects in
the page before it's full loaded?
--
Rob
Jan 30 '06 #2
Tony Rice wrote:
If I've loaded a set of functions in a webdocument like this:
<script language="JavaScript" type="text/javascript"
src="/js/foo.js"</script>
The language attribute is deprecated. You seem to have forgotten the ">"
from the opening script tag.
Shouldn't I be able to call a function from inside foo.js later in that
same document by doing something like this:

<script language="JavaScript" type="text/javascript">myfunction(myargs)
</script>
Yes.
Even though it's generated from a CGI script?
How the server works out what to send to the user isn't relevant.
The all loaded javascript files have the same scope do they not? It's not
like the functions in foo.js available only to other functions within that
file? Right?


Right.

--
David Dorward <http://blog.dorward.me.uk/> <http://dorward.me.uk/>
Home is where the ~/.bashrc is
Jan 30 '06 #3
Tony Rice wrote:
If I've loaded a set of functions in a webdocument like this:
<script language="JavaScript" type="text/javascript"
src="/js/foo.js"</script>

Shouldn't I be able to call a function from inside foo.js later in that
same document by doing something like this:
No, you need a ">" after: src="/js/foo.js"
Mick


<script language="JavaScript" type="text/javascript">myfunction(myargs)
</script>

Even though it's generated from a CGI script? The all loaded javascript
files have the same scope do they not? It's not like the functions in
foo.js available only to other functions within that file? Right?

Jan 30 '06 #4
Tony Rice said the following on 1/30/2006 6:11 PM:
If I've loaded a set of functions in a webdocument like this:
<script language="JavaScript" type="text/javascript"
src="/js/foo.js"</script>
Drop the language attribute though.
Shouldn't I be able to call a function from inside foo.js later in that
same document by doing something like this:

<script language="JavaScript" type="text/javascript">myfunction(myargs)
</script>
Yes, that is exactly how you would do it, but drop the language attribute.
Even though it's generated from a CGI script?
The script engine in the browser doesn't know, nor does it care, what
generated the script contents.

The all loaded javascript files have the same scope do they not?
They have the same scope as if you manually included them in the page,
which is what the browser does.

<script type="text/javascript" src="myJSFile.js"></script>

And if myJSFile.js had a function in it like this:

function myFunction(){
alert('This is an alert');
}

That function will have the same "scope" as if you did this:

<script type="text/javascript">
function myFunction(){
alert('This is an alert');
}
</script>

It's not like the functions in foo.js available only to other
functions within that file? Right?


Correct.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq & newsgroup weekly
Javascript Best Practices - http://www.JavascriptToolbox.com/bestpractices/
Jan 31 '06 #5
RobG <rg***@iinet.net.au> wrote in news:pkxDf.241$Nv4.45834
@news.optus.net.au:
Do you get errors? What is the error message? Is the error because the
file isn't loaded, or because you are trying to manipulate objects in
the page before it's full loaded?


The errors I'm getting are DOM related. Wanted to make sure I was on the
right track before I dug anymore.

I'm trying to maintain state in a URL for a AJAX app. Make a element on
the page loadable via an ajax call or load automatically based on arguments
passed in the URL. But I'm getting DOM errors when I call the function
inline that is normally called from a user click.
Jan 31 '06 #6
Tony Rice wrote:
RobG <rg***@iinet.net.au> wrote in news:pkxDf.241$Nv4.45834
@news.optus.net.au:

Do you get errors? What is the error message? Is the error because the
file isn't loaded, or because you are trying to manipulate objects in
the page before it's full loaded?

The errors I'm getting are DOM related. Wanted to make sure I was on the
right track before I dug anymore.

I'm trying to maintain state in a URL for a AJAX app. Make a element on
the page loadable via an ajax call or load automatically based on arguments
passed in the URL. But I'm getting DOM errors when I call the function
inline that is normally called from a user click.


That sounds like you are trying to access elements before the page has
created them, either onload or after the AJAX stuff.

Code snippet? URL? Did you fix the missing '>' from the closing script
tag noted in other responses?

--
Rob
Jan 31 '06 #7
RobG <rg***@iinet.net.au> wrote in news:zvBDf.251$Nv4.46029
@news.optus.net.au:
That sounds like you are trying to access elements before the page has
created them, either onload or after the AJAX stuff.

Code snippet? URL?
I'm using jah (http://microformats.org/wiki/rest/ahah) to load URLs inline
dynamically. The perl script looks like this:

my $ajaxcall="jah('myotherscript.cgi?myarg=arg', 'contentdiv')";
if (param('myparam')){
print "<script type=\"text/javascript\">$ajaxcall</script>\n";

}else{
print a({href=>"javascript:$ajaxcall"}, 'click to load');
}
print "<div id='contentdiv'></div>\n";

The goal is to have the content loaded inline automatically if the
'myparam' is passed in the query string and make it loadable inline by
clicking the link.
I'm getting the following errors:

document.getElementById(target) has no properties

and

href has no properties
These are both coming from the ahah code. What I dont get is what is
special about the click. Either way it's accessing the document object so
it's not like the click is providing an object.

Any ideas?
Did you fix the missing '>' from the closing script
tag noted in other responses?


yes. That was a cut and paste error between the code and my newsreader.
Jan 31 '06 #8
Tony Rice wrote:
RobG <rg***@iinet.net.au> wrote in news:zvBDf.251$Nv4.46029
@news.optus.net.au:

That sounds like you are trying to access elements before the page has
created them, either onload or after the AJAX stuff.

Code snippet? URL?

I'm using jah (http://microformats.org/wiki/rest/ahah) to load URLs inline
dynamically. The perl script looks like this:

my $ajaxcall="jah('myotherscript.cgi?myarg=arg', 'contentdiv')";
if (param('myparam')){
print "<script type=\"text/javascript\">$ajaxcall</script>\n";

}else{
print a({href=>"javascript:$ajaxcall"}, 'click to load');
}
print "<div id='contentdiv'></div>\n";


Don't post server code, post what your client gets - this is a
JavaScript news group, not Perl :-)

What content is written to the script element? What is written as the
value of the A element's href attribute? What is the surrounding HTML?

I have no idea what is ending up in your A element attributes, so it's
hard to help. Use view source on the client to get the actual HTML that
is delivered to your page (a minimal test case will do).

The goal is to have the content loaded inline automatically if the
'myparam' is passed in the query string and make it loadable inline by
clicking the link.
I'm getting the following errors:

document.getElementById(target) has no properties
The value of 'target' should be the ID of an element on your page. If
the page hasn't finished loading (unlikely), or the ID doesn't exist
(much more likely), then you will get the error you get.

The 'ahah' code does not test to see if features are supported, nor does
it check to see if document.getElementById(target) returns anything
useful before trying to access its innerHTML property.


and

href has no properties

These are both coming from the ahah code. What I dont get is what is
special about the click. Either way it's accessing the document object so
it's not like the click is providing an object.


The click runs the script that is in the A element's href attribute. If
you show the client HTML, we can see what is actually in the href attribute.

--
Rob
Feb 1 '06 #9
RobG <rg***@iinet.net.au> wrote in
news:qG*****************@news.optus.net.au:
Tony Rice wrote:
RobG <rg***@iinet.net.au> wrote in news:zvBDf.251$Nv4.46029
@news.optus.net.au:

That sounds like you are trying to access elements before the page
has created them, either onload or after the AJAX stuff.

Code snippet? URL?

I'm using jah (http://microformats.org/wiki/rest/ahah) to load URLs
inline dynamically. The perl script looks like this:

my $ajaxcall="jah('myotherscript.cgi?myarg=arg', 'contentdiv')";
if (param('myparam')){
print "<script type=\"text/javascript\">$ajaxcall</script>\n";

}else{
print a({href=>"javascript:$ajaxcall"}, 'click to load');
}
print "<div id='contentdiv'></div>\n";


Don't post server code, post what your client gets - this is a
JavaScript news group, not Perl :-)

What content is written to the script element? What is written as the
value of the A element's href attribute? What is the surrounding
HTML?

I have no idea what is ending up in your A element attributes, so it's
hard to help. Use view source on the client to get the actual HTML
that is delivered to your page (a minimal test case will do).


Sorry, thought it was obvious from that code snippet and it's important
to show how the javascript is generated differently depending on the
context.

The problem has been fixed by putting

<A HREF="javascript:jah('something.cgi', 'contentdiv')>click to load</A>

inside <div id='contentdiv'> rather than outside.

I have no idea why this fixed it. This is the only change made but now
I'm getting no further errors from getElementById when calling the ahah
function directly.
The goal is to have the content loaded inline automatically if the
'myparam' is passed in the query string and make it loadable inline
by clicking the link.
I'm getting the following errors:

document.getElementById(target) has no properties


The value of 'target' should be the ID of an element on your page. If
the page hasn't finished loading (unlikely), or the ID doesn't exist
(much more likely), then you will get the error you get.


I checked that angle out as well. didn't matter where the target div was
placed in relation ship to the ahah call.

Not sure why it works not, but at least it works.
Feb 1 '06 #10
Tony Rice wrote:
RobG <rg***@iinet.net.au> wrote in
news:qG*****************@news.optus.net.au:

Tony Rice wrote:
RobG <rg***@iinet.net.au> wrote in news:zvBDf.251$Nv4.46029
@news.optus.net.au:

That sounds like you are trying to access elements before the page
has created them, either onload or after the AJAX stuff.

Code snippet? URL?
I'm using jah (http://microformats.org/wiki/rest/ahah) to load URLs
inline dynamically. The perl script looks like this:

my $ajaxcall="jah('myotherscript.cgi?myarg=arg', 'contentdiv')";
if (param('myparam')){
print "<script type=\"text/javascript\">$ajaxcall</script>\n";

}else{
print a({href=>"javascript:$ajaxcall"}, 'click to load');
}
print "<div id='contentdiv'></div>\n";
Don't post server code, post what your client gets - this is a
JavaScript news group, not Perl :-)

What content is written to the script element? What is written as the
value of the A element's href attribute? What is the surrounding
HTML?

I have no idea what is ending up in your A element attributes, so it's
hard to help. Use view source on the client to get the actual HTML
that is delivered to your page (a minimal test case will do).

Sorry, thought it was obvious from that code snippet and it's important
to show how the javascript is generated differently depending on the
context.


It's never safe to assume what the client gets from the server based on
server code. Only by posting what the client gets can the code be
debugged with any certainty.

Use view source, or one of the 'view innerHTML' bookmarklets, e.g. copy
and paste the following as a singe line in the address:

javascript:'<code>'+(document.documentElement ||
document.body).innerHTML.replace(/&/g,%22&amp;%22).replace(/</g,
%22&lt;%22).replace(/%20%20/g, %22&nbsp;%20%22).replace(/\n/g,
%22<br>%22)+'<\/code>';

The problem has been fixed by putting

<A HREF="javascript:jah('something.cgi', 'contentdiv')>click to load</A>

inside <div id='contentdiv'> rather than outside.

I have no idea why this fixed it. This is the only change made but now
I'm getting no further errors from getElementById when calling the ahah
function directly.
There is no ahah function, there is jah() and jahDone() (which is called
by jah()).

Until you post the page source that the client gets, is anyone's guess
as to why it now 'works'. jahDone() should replace the content of
'contentdiv' with whatever is sent back from the server, so your link
will be replaced.
[...]
I'm getting the following errors:

document.getElementById(target) has no properties


The value of 'target' should be the ID of an element on your page. If
the page hasn't finished loading (unlikely), or the ID doesn't exist
(much more likely), then you will get the error you get.


I checked that angle out as well. didn't matter where the target div was
placed in relation ship to the ahah call.


The ahah code runs from a click (as far as I can tell) therefore the
page /should/ be loaded and contentdiv should be able to be anywhere in
the page.

Not sure why it works not, but at least it works.


Unless you post the page source actually received by the client...
--
Rob
Feb 1 '06 #11

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: pieter.breed | last post by:
Hi All, Is it possible to export a c# method into a dll in such a way that your "normal" C application can then call this method? To be clear: I am not asking how to use "DllImport" or...
19
by: Ross A. Finlayson | last post by:
Hi, I hope you can help me understand the varargs facility. Say I am programming in ISO C including stdarg.h and I declare a function as so: void log_printf(const char* logfilename, const...
5
by: Dave | last post by:
does calling a regular function cost any cpu time? In other words, is it faster to write the code of two functions into main(), or is it the exact same thing as calling two functions. I know its...
1
by: Mark Jerde | last post by:
Yesterday I posted the message below to microsoft.public.dotnet.languages.vb and microsoft.public.vc.language. The two replies are also posted. I need to write some ISO C++ functions, more...
1
by: Jesse McGrew | last post by:
Hi all, I'm trying to make a plugin DLL for a third-party application, using VC++ .NET 2003. This DLL acts as a bridge between the C++ plugin API of the application, and my actual plugin code...
1
by: H.B. | last post by:
Hi, I need to make a function that can display data on my Managed C++ app and be called by an unmanaged C++ DLL. Something like : void Form1::Form1_Load(System::Object * sender,...
2
by: Daniel Lidström | last post by:
I'm using a library called fyba. This library reads and writes files in a format called sosi. fyba uses the following code to determine if the calling process has own methods to handle errors,...
18
by: John Friedland | last post by:
My problem: I need to call (from C code) an arbitrary C library function, but I don't know until runtime what the function name is, how many parameters are required, and what the parameters are. I...
4
by: Edwin Gomez | last post by:
I'm a C# developer and I'm new to Python. I would like to know if the concept of Asynchronous call-backs exists in Python. Basically what I mean is that I dispatch a thread and when the thread...
10
by: sulekhasweety | last post by:
Hi, the following is the definition for calling convention ,which I have seen in a text book, can anyone give a more detailed explanation in terms of ANSI - C "the requirements that a...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
1
muto222
php
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.