473,416 Members | 1,738 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,416 software developers and data experts.

Passing javascript variables to Perl

12
Hi

I have a html page with javascript in it that assigns a set of coordinates to javascript variables. The question I have is how can I then send these variables to a Perl CGI script using a submit on a html form.

An example of some of the code below:

Expand|Select|Wrap|Line Numbers
  1.     var map;
  2.     var geocoder = null;
  3.     var addressMarker;
  4.     var originpoint = null;
  5.  
  6. ....................
  7.  
  8.  
  9. function showAddress(address) {
  10.       if (geocoder) {
  11.         geocoder.getLatLng(address,
  12.           function(point1) {
  13.             if (!point1) {
  14.               alert(address + " not found");
  15.             } else {
  16.               if (addressMarker) {
  17.                 map.removeOverlay(addressMarker);
  18.               }
  19.               addressMarker = new GMarker(point1);
  20.               map.setCenter(point1, 15);
  21.               map.addOverlay(addressMarker);
  22.               originpoint = point1;
  23.               alert("origin is now: "+originpoint+" destination is now: "+destinationpoint);
  24.             }
  25.           }
  26.         );
  27.       }
  28.     }
  29.  
  30. <body onload="load()" onunload="GUnload()">
  31.     <form action="#" onsubmit="showAddress(this.address.value); return false">
  32.       <p>
  33.  Origin:<input type="text" size="50" id="addressInput" name="address" value="London, UK" />
  34.         <input type="submit" value="Show Origin" />
  35.       </p>
  36.     </form>
  37.  
  38.  
Now I want to be able to store the variable "originpoint" and using another form to submit it to the perl CGI script. Any ideas?
Jul 20 '07 #1
8 5434
Harch84
12
Can anyone suggest an answer to this? I was thinking about some sort of hidden input form but am not sure how to implement it or how it would work?
Jul 20 '07 #2
pbmods
5,821 Expert 4TB
Heya, Harch.

Easiest way to do it is to put them in the form. Create a couple of hidden inputs, then assign their values in the form's onsubmit.
Jul 21 '07 #3
Harch84
12
Hi Pbmods

I tried to do what you said but seem to be passing just the name of the variable not the actual value of the variable?

Expand|Select|Wrap|Line Numbers
  1.     <form action="http://morar.geos.ed.ac.uk/~s0679212/cgi_bin/sql_test.pl" method="POST" onSubmit="Origin">
  2.     <input type="hidden" name="Origin" value="originpoint">
  3.     <input type="Submit" value="Go!">
  4.     </form>
  5.  
In the perl script this returns the text "originpoint" instead of the actual value of the variable originpoint from javascript. What am I doing wrong?
Jul 21 '07 #4
pbmods
5,821 Expert 4TB
Heya Harch.

You have to use the onsubmit handler for your form and then use JavaScript to populate the form values:

Expand|Select|Wrap|Line Numbers
  1. <form ... onsubmit="return setVars();">
Expand|Select|Wrap|Line Numbers
  1. function setVars()
  2. {
  3.     document.getElementById('idOfInput') = variableName;
  4.     .
  5.     .
  6.     .
  7.     return true;
  8. }
  9.  
Jul 21 '07 #5
Harch84
12
Im really sorry about this but I still seem to be getting errors in my script preventing the javascrip variable to be passed to perl. I have used the advice given here and have this code:

Expand|Select|Wrap|Line Numbers
  1.     <script type="text/javascript">
  2.     //<![CDATA[
  3.  
  4.     function setVars()
  5.         {
  6.             document.getElementById('orig') = originpoint;
  7.             return true;
  8.         }
  9.  
  10.     //]]>
  11.     </script>
  12.  
  13.  
  14. <body onload="load()" onunload="GUnload()">
  15.  
  16. ........................ // other forms go here that use geocoder
  17.  
  18. <form action="http://morar.geos.ed.ac.uk/~s0679212/cgi_bin/sql_test.pl" method="POST" onsubmit="return setVars();">
  19. <input type="hidden" id="orig" name="Origin">
  20. <input type="Submit" value="Go!">
  21. </form>
  22.  
  23.   </body>
  24. </html>
  25.  
  26.  
Now the error I get is when I click on the submit button on the web page and it says that on the line 90 char 4 which is:

Expand|Select|Wrap|Line Numbers
  1.  
  2. 88    function setVars()
  3. 89    {
  4. 90        document.getElementById('orig') = originpoint;
  5. 91        return true;
  6. 92    }
  7.  
  8.  
The error says that there is a "Wrong number of arguements or invalid property assignment".??

As you can tell im no javascript expert so any help would be massivly appreciated and im sure its just something simple that I cant see but is obvious to you all. Thanks in advance
Jul 22 '07 #6
pbmods
5,821 Expert 4TB
Heya, Harch.

You're getting close.

In that statement, you are trying to set the *element* to originpoint, which is what's giving JavaScript such a bellyache.

Instead, you want to set the element's *value* to originpoint:
Expand|Select|Wrap|Line Numbers
  1.  function setVars()
  2. {
  3.     document.getElementById('orig').value = originpoint;
  4.     return true;
  5. }
  6.  
Jul 22 '07 #7
Harch84
12
Heya Pbmods

That was the final part of the puzzle thanks so much for your help! Works perfectly now I almost cant believe it :-)

All the best

Harch
Jul 22 '07 #8
pbmods
5,821 Expert 4TB
Heya, Harch.

Glad to hear you got it working! Good luck with your project, and if you ever need anything, post back anytime :)
Jul 22 '07 #9

Sign in to post your reply or Sign up for a free account.

Similar topics

9
by: google_nospam | last post by:
Thanks in advance for any help. I'm looking for a way to pass data from php to perl. Basically, I want to take some dynamic data from a database, mixed with user input, then reformat it to make a...
1
by: Joe | last post by:
I am trying to write a Perlscript to be used with some HTML pages. Here is how it works: 1.. The first HTML page has a form which requests for user input. Then it passes the QUERY_STRING...
1
by: Consuelo Guenther | last post by:
Hello, I am having problems with passing variables between pages. I have the following: First asp page has the function: -----------------------------------------------------------------------...
3
by: Jeanne | last post by:
I am working on a cgi script that is suppose to pop-up a javascript box from the following perl variables:$TodayDate, $LinkCity, $LinkState. I recently encountered a problem with the $LinkCity...
3
by: Tommo | last post by:
Hello All, I am a still learning so be easy on me. I am trying to get some code to work that is using JS and Perl/CGI, I am using AS Perl and an Apache Server on XP as the webserver. Can anyone...
3
by: domeceo | last post by:
can anyone tell me why I cannot pass values in a setTimeout function whenever I use this function it says "menu is undefined" after th alert. function imgOff(menu, num) { if (document.images) {...
26
by: Dave Hammond | last post by:
In document "A.html" I have defined a function and within the document body have included an IFRAME element who's source is document "B.html". In document "B.html" I am trying to call the function...
1
by: satish2112 | last post by:
Hi, I have a text-area which contains values from mysql database and 2 buttons, Edit and Update. When I click on the Edit button, I can edit the text-area (initially non-editable). After this,...
5
by: veeraiah | last post by:
Hi, I am new to PERL Scripting, i need your help with one of the problem i am having. I am having a PERL Script which has two variables $CurMon and $PriorMon. a Windows batch script calls this...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
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
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
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...
0
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
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
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,...

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.