Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Jul 2011
    Posts
    8
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Passing input value from one page to another

    I'm fairly new at this. I'm trying to build a store locator and trying to figure out how to pass an input value from one page to another page. User would input their zipcode or address in a form on one page and the map and locations would be called on another page using the input.

    I'm using ehound store locator platform (sample - here -> http://www.ehoundplatform.com/api/1....nd-google.html)

    The map/locator script is this

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Store Locator Demo using FreeHound and Google Maps V.3</title>
    <style type="text/css">
    #map_canvas {
      height: 400px;
      width:710px;
      margin-bottom: 10px;
    }
    .addressBox {
    	margin-bottom:10px;
    }
    </style>
    <script type="text/javascript" src="http://www.ehoundplatform.com/api/1.0/proximity.js?key=xz396aw1qe432q1"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&region=AU"></script>
    <script type="text/javascript">
      var geocoder;
      var map;
      var bounds;
      var markersArray = [];
      var infoWindow;
      var mapCenterLat = '-28.1594';
      var mapCenterLon = '135.6456';
      
      function initialize() {
        geocoder = new google.maps.Geocoder();
        var myOptions = {
          zoom: 4,
          center: new google.maps.LatLng(mapCenterLat, mapCenterLon),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        
        //initialise single info window to show only one at a time
        infoWindow = new google.maps.InfoWindow();
        
        //improve usability by centering map around search point on zoom in/out
        google.maps.event.addListener(map, 'zoom_changed', function() {
          if(mapCenterLat && mapCenterLon) {
          	setTimeout('centerMap(mapCenterLat, mapCenterLon)', 300);
          }
        });
      }
      
      function addMarkerOverlay(location, title, infoBox, image) {
    	  var marker = new google.maps.Marker({
    		position: location,
    		map: map,
    		icon: image
    	  });
    	  marker.setTitle(title);
    	  
    	  google.maps.event.addListener(marker, 'click', function() {
    			 infoWindow.setContent(infoBox);
    			 infoWindow.open(map, marker);
    		});
    	  
    	  markersArray.push(marker);
    	}
    	 
    	function deleteOverlays() {
    	  if (markersArray) {
    			for (i in markersArray) {
    				markersArray[i].setMap(null);
    			}
    			markersArray.length = 0;
    	  }
    	}
    	
      function searchAroundMe() {
        deleteOverlays();
        
        bounds = new google.maps.LatLngBounds();
        
        var address = document.getElementById("address").value;
        geocoder.geocode( { 'address': address}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            
            //custom marker to mark initial search location
            var image = new google.maps.MarkerImage('search_location.png',
          		// This marker is 32 pixels wide by 32 pixels tall.
          		new google.maps.Size(32, 32),
          		// The origin for this image is 0,0.
          		new google.maps.Point(0,0),
          		// The anchor for this image is the center of the red circle at 16,16.
          		new google.maps.Point(16, 16)
          	);
    				
            addMarkerOverlay(results[0].geometry.location, 'search spot', 'search initiated from here', image);
            bounds.extend(results[0].geometry.location);
            
            var searchLatitude = results[0].geometry.location.lat();
            var searchLongitude = results[0].geometry.location.lng();
    				
    				mapCenterLat = searchLatitude;
    				mapCenterLon = searchLongitude;
            
            freeHound = new FreeHound( 'showLocs' );
            search = new FH_Search(); 
    				search.count = 10; //number of locations to be returned in the result set
    				search.max_distance = 0; //distance limit for proximity search in km, 0 for unlimited
    				//search from a specific point using latitude and longitude of that point
    				search.point = new FH_Location( new FH_LatLon( searchLatitude,searchLongitude ) );
    				
    				//search.filters = new Array();
    				//search.filters.push( new FH_SearchFilter('cat_id', 'eq', '177') );
    				
    				search.create_log = false;
    				freeHound.proximitySearch( search );
          } else {
            alert("Geocode was not successful for the following reason: " + status);
          }
        });
      }
      
      function showLocs(response){
    		if ( response.error_code ) {
    			alert(response.error_message);
    		}
    		
    		if ( response.record_set ) {
    			//show results in a table
    			var resultsTable = '<table border="1" cellspacing="0" cellpadding="3" summary="">';
    			resultsTable += '<tr>';
    			resultsTable += '<td>#<\/td>';
    			resultsTable += '<td>Street Address<\/td>';
    			resultsTable += '<td>Town/Suburb/City<\/td>';
    			resultsTable += '<td>Postal Code<\/td>';
    			resultsTable += '<td>State/Province<\/td>';
    			resultsTable += '<td>Distance<\/td>';
    			resultsTable += '<td>Longitude<\/td>';
    			resultsTable += '<td>Latitude<\/td>';
    			resultsTable += '<\/tr>';
    			
    			for (var record_count = 0, rl = response.record_set.length; record_count < rl; record_count++ ) {
    				var record = response.record_set[record_count];
    				var title = record.details.location_name;
    				var infoBoxContent = '<strong>Location #'+(record_count+1).toString()+'<\/strong>';
    				infoBoxContent += '<br \/>'+record.address.street_address+'<br \/>'+record.address.town + ', ' + record.address.postal_code +'<br \/>';
    				infoBoxContent += 'Distance: '+record.distance.km+'km<br \/>';
    				addMarkerOverlay(new google.maps.LatLng(record.latitude, record.longitude), title, infoBoxContent, null);
    				
    				if (record_count < 6) {
    					bounds.extend(new google.maps.LatLng(record.latitude, record.longitude));
    				}
    				
    				resultsTable += '<tr>';
    				resultsTable += '<td>'+(record_count+1).toString()+'<\/td>';
    				resultsTable += '<td>'+record.address.street_address+'<\/td>';
    				resultsTable += '<td>'+record.address.town+'<\/td>';
    				resultsTable += '<td>'+record.address.postal_code+'<\/td>';
    				resultsTable += '<td>'+record.address.state+'<\/td>';
    				resultsTable += '<td>'+record.distance.km+'KM<\/td>';
    				resultsTable += '<td>'+record.longitude+'<\/td>';
    				resultsTable += '<td>'+record.latitude+'<\/td>';
    				resultsTable += '<\/tr>';
    			}
    			
    			map.fitBounds(bounds);
    			
    			resultsTable += '<\/table>';
    	
    			var resultSet = document.getElementById('resultSet');
    			resultSet.innerHTML = resultsTable;
    		}
      }
      
      function centerMap(lat,lon) {
    		var centrePoint = new google.maps.LatLng(lat,lon);
    		map.setCenter(centrePoint);
    	}
    </script>
    </head>
    <body onload="initialize()">
      <div class="addressBox">
    
        <form action="" onsubmit="searchAroundMe(); return false;">
        <input id="address" type="textbox" value="">
        <input type="submit" name="search" value="Address Search">
        </form>
      </div>
      <div id="map_canvas"></div>
      <div id="resultSet"></div>
    </body>
    </html>
    and the form itself would be on another page. Trying to pull the address input over. This obviously doesn't work

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Store Locator</title>
    </head>
    <body>
      <div>
    
        <form action="ehound.html" method="post">
        <input id="address" name="address" type="textbox">
        <input type="submit" name="search" value="Address Search">
        </form>
      </div>
    
    </body>
    </html>
    I've looked around on passing inputs via php and such, but this script seems to call on javascript as well and I'm having trouble implementing anything that works. Any help would be greatly appreciated.

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,553
    Thanks
    78
    Thanked 4,382 Times in 4,347 Posts
    You can't use method="post" unless you use server-side code to process the posted data.

    You *can* use method="get", which puts the data into a querystring in the URL. JavaScript *can* parse the querystring to get information.

    location.search contains the querystring of the URL that invoked the page, including the leading question mark.

    That is, if the URL was "ehound.html?address=123%20Elm%20St.&search=Address%20Search" then location.search will hold "?address=123%20Elm%20St.&search=Address%20Search". So you just have to parse that to find the name/value pairs you are interested in.

    EXAMPLE:
    Code:
    var qsVars = [ ];
    if ( location.search.length > 2 ) 
    {
        var pairs = location.search.substring(1).split("&");
        for ( var p = 0; p < pairs.length; ++p )
        {
            var pair = pairs[p].split("=");
            qsVars[ pair[0] ] = decodeURIComponent( pair[1] );
        }
    }
    Once you run that code, then you can ask for query string variables by name by doing (example):
    Code:
        var address = qsVars["address"];

  • Users who have thanked Old Pedant for this post:

    jughead47 (07-18-2011)

  • #3
    New to the CF scene
    Join Date
    Jul 2011
    Posts
    8
    Thanks
    4
    Thanked 0 Times in 0 Posts
    I understand what this is trying to do - getting rid of all the extraneous characters that are generated and then when you make that the var, it is the exact address input from the user.

    I'm just not sure where the code goes in the script. I can't get it to work anywhere I put it.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •