volksnav: JS-Werte in HTML übernehmen und URL aussenden

problematische Seite

Hallo zusammen,

ich Zauberlehrling habe wieder eine harte JS/HTML Nuss zu knacken, diesmal in Addis Abeba www.AddisMap.com . Die Erstellung einer Kreuzungsleitzahlen-Tabelle soll mittels einfaches Klicken vereinfacht werden.

Wenn man auf die Karte in "www.volksnav.de/clickToSaveSQ" klickt (eventuell 2x), erscheinen an dieser Stelle die entsprechenden lat/lon. Unten in der prompt-form hat man den Namen dieses Punktes vorher einzugeben.

Die Aufgabe ist, eine URL des Typs "./save.php/? objectName=(promptInhalt) &lat = (clickedLat) &lon = (clickedLon) " auszulösen und den prompt zu löschen.

Im server bewirkt bereits eine solche URL dass die vorhandene "save.php" eine Datei "(promtInhalt).txt" erzeugt und PromtInhalt, lat, lon und Kreuzungsleitzahl errechnet und speichert.

Meine Doppelfrage ist: wie übertrage ich die clicked lat/lon zu einer geeigneten HTML form die beim klicken die URL auslöst? Wenn es nicht anders geht, würde man einen button akzeptieren, also Name eintragen und 2 x klicken.

Im folgenden code sind HTML-Fragmente zu sehen die nur zeigen sollen dass ich mich schon damit befasst habe und vielleicht nah dran bin.

Danke im Voraus für Euer brain storming.

<script>

function onMapClick(e) {
	  var posmsg =  e.latlng.lat + " " + e.latlng.lat  ;    // clickedLat und clickedLon
	popup.setLatLng(e.latlng).setContent(posmsg).openOn(map);  // funktioniert
} 
</script> 
<html> 						
<form>Object name: <input type="text" name="objectName">  <!-- value = z. B. "crossingElDorado" -->
</form> 

    <form action="http://www.volksnav.de/clickToSaveSQ/save.php">
    <input type="submit" name="Button" value="save">     <!-- button sollte nicht nötig sein -->
<input type="hidden" name="objectName" value = (promptInhalt)  ?>">   <!--  wie ?  -->
<input type="hidden" name="lat" value= (latClicked); ?>">             <!--    wie? -->
<input type="hidden" name="lon" value= (lonClicked)>                  <!--   wie?  -->
          </form>
</body></html>
  1. problematische Seite

    wie übertrage ich die clicked lat/lon zu einer geeigneten HTML form die beim klicken die URL auslöst?

    als Parameter: lat=9.33&lon=11.2 und ob das per GET oder POST erfolgt ist im Grunde genommen egal, es sei denn das ist irgendwo vorgegeben.

    MfG

  2. problematische Seite

    Tach!

    wie übertrage ich die clicked lat/lon zu einer geeigneten HTML form die beim klicken die URL auslöst?

    Du möchtest also wissen, wie man mit Javascript Formularelemente anspricht. Dann schau doch mal in unser Wiki, Richtung: Javascript → Formularelemente. Das steht da (bzw. im Vorgänger) gefühlt schon, seit es Javascript gibt. Und ein Formular hat auch noch eine Funktion namens submit(), die man aufrufen kann.

    dedlfix.

    1. problematische Seite

      Danke für die Tipps. Die JS-Sprache ist mir nicht geheuer zumals ich mich noch visual basic, obj-C für iphone apps etc. befassen muss.

      Mit submit() habe ich es nicht geschafft die lat/lon zu senden und im nachfolgenden code wird nicht gesendet. Was müsste ich ändern?

      (Eigentlich würde ich lieber auf Festplatte und nicht im server speichern aber angeblich geht das nicht mit JS, aus Sicherheitsgründen. Gibt es einen Methode?)

      function onMapClick(e) {
      	var latClicked = e.latlng.lat;	var lonClicked = e.latlng.lng;
      	   var posmsg =  lonClicked + " " + latClicked  ;     
      	popup.setLatLng(e.latlng).setContent(posmsg).openOn(map);  // das klappt
      }  
      function losGehts () {
         //   document.SaveData.action="http://www.volksnav.de/clickToSaveSQ/save.php/?objectName=" + 
      document.SaveData.objectName.value +"&lat="+ clickedLat +"&lon="+ clickedLon; 
      
         document.SaveData.objectName.value = "";   //  das klappt wenn die Zeile davor inaktiv ist
      }
      
      </script>  						
         <form name="SaveData" action="">
                  <input type="text" name="objectName" value="">
            <input type="button" value="send nameLatLon" onclick="losGehts()">
          </form>
      </body>
      </html>
      
      1. problematische Seite

        Hallo,

        (Eigentlich würde ich lieber auf Festplatte und nicht im server speichern aber angeblich geht das nicht mit JS, aus Sicherheitsgründen. Gibt es einen Methode?)

        kennst du schon den FileSaver an.

        Gruß
        Jürgen

        1. problematische Seite

          Ich hab's! Habe die save.php in die index.htm (als index.php) integriert.

          Mit z. B. "document.SaveData.lat.value = latClicked" wird nur das submited() was nötig ist, jedoch über 2 klicks. Arme gestresste Beamte...

          Thanks a lot an das Forum, nun mache ich mich an den FileSaver.js ganz begeistert ran.