URL Parameter in Formularfelder übergeben

simsus

Grünschnabel
Hallo zusammen

Sicherlich werden gleich eine Menge den Kopf schütteln, wenn sie schon den Titel sehen.

Aber: Ich habe schon die Antwort hier gefunden, habe nur ein kleines Problem dabei.

Die Threads "Textfelder durch Hyperlink füllen" und "Formularfelder aus Mail in neues Fenster kopieren" haben mir sehr bei der Suche geholfen und ich konnte auch die Skripte in meine Seite einbinden.

Was mich jedoch stört und wo ich nicht weiss, wie man das umgehen kann: Wenn nur die nakte URL wie z.B. geturl.html aufgerufen wird, wo keine Parameter angehangen werden, erhalte ich eine komplett leere Seite bzw. ich erhalte gemäss dem ersten Thread "errorerror".

Wie komme ich dennoch zu meinen Formularen?

Lieben Gruss

Marcel
 
Hallo,

Wie kommen die Daten (zum Bsp. Vorname und Nachname) in deine versendete Mail. Ist der User bei dir schon registriert? Wenn ja, würde ich nicht die Daten an die Url in der Mail anhängen, sondern nur eine ID der Url übergeben und dann zum Bsp. mit PHP die Daten eintragen.

Ansonsten hilft dir vll das hier:
Url: http://localhost/!test/?var1=VAR1&var2=VAR2
Code:
<script type="text/javascript">
    function getUrlParam(q, s) {
        s = s ? s : window.location.search;
        var re = new RegExp('&' + q + '(?:=([^&]*))?(?=&|$)', 'i');
        return (s = s.replace(/^\?/, '&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined;
    }

    var var1 = getUrlParam('var1');
    var var2 = getUrlParam('var2');
    document.write(var1 + " " + var2);
</script>
 
Zuletzt bearbeitet:
@simsus
Es lohnt sich immer, alle Eventualitäten abzufangen und wenn es nur ist, dass Du eine nicht existente Get-Variable mit einem Leerstring quittierst. Da Du in JS schreibst, wäre meine Antwort leider nicht ganz richtig, dennoch wäre auch hier php die Wahl.

PHP:
if( isset($_GET['bla']) )
{
  $formdata = $_GET['bla'];
}
else
{
  $formdata = "";
}

// ..........

echo "<form>";
echo "<input name='eingabe' type='text' size='10' maxlength='10' value='$formdata'>";
echo "</form>";

mfg chmee
 
Hallo

Vielen Dank für eure Infos.

Die Daten sind bereits bei mir. Entweder vollständig oder nur teilweise.
Ziel wär es, wie in den Threads oben gewünscht, dass ich einen Link mitschicke um evtl. Daten zu korrigieren oder zu ergänzen.
Die URL sollte demnach dann so aussehen:
http://www.meineseite.de/formular.html?vorname=SIMS&nachname=US&email=[...]

Da ich von PHP ungefähr soviel Ahnung habe, wie eine Kuh vom Eierlegen, muss ich mich jedoch mit JS zufrieden geben.

Kann man folgenden Code irgendwie anpassen, dass bei fehlenden Parametern die Seite dennoch komplett geladen wird?

Code:
<html>
<head>
<script type="text/javaScript">
<!--
function getUrlParameter(par) 
{
  var value='';
  var UrlParameter = window.location.search;
  
  if(UrlParameter != "") 
  {
    var i = UrlParameter.indexOf(par+"=");
    if(i >= 0) 
    {
      i = i+par.length+1;
      var k = UrlParameter.indexOf("&", i);
      if(k < 0)
      {
        k = UrlParameter.length;
      }
      value = UrlParameter.substring(i, k);
      for(i=0; i<value.length; i++) 
      {
        if(value.charAt(i) == '+') 
        {
          value=value.substring(0, i)+" "+value.substring(i+1,value.length);
        }
      }
      value=unescape(value);
    }
  }
  else
  { 
    document.write("error"); 
  }
  return value;
}
//-->


function init()
{
  var vname = getUrlParameter("vorname");
  var nname = getUrlParameter("nachname");
  document.test.name.value = vname+" "+nname;
}

</script>
</head>
<body onLoad="init()">
<form name="test">
<input type="text" name="name" id="name" disabled />
</form>
</body>
</html>

Gruss Marcel
 
Hallo zusammen

Das Problem hat sich wahrscheinlich von alleine gelöst.

Ich hatte während meines Nachtdienstes einen hellen Moment, wo ich ein wenig an den Zeichen im Code gerückt habe ;-)

Hier der komplette Code, wie er jetzt im Einsatz ist:

Code:
<html>
<head>
<script type="text/javaScript">
<!--
function getUrlParameter(par) 
{
  var value='';
  var UrlParameter = window.location.search;
  
  if(UrlParameter != "") 
  {
    var i = UrlParameter.indexOf(par+"=");
    if(i >= 0) 
    {
      i = i+par.length+1;
      var k = UrlParameter.indexOf("&", i);
      if(k < 0)
      {
        k = UrlParameter.length;
      }
      value = UrlParameter.substring(i, k);
      for(i=0; i<value.length; i++) 
      {
        if(value.charAt(i) == '+') 
        {
          value=value.substring(0, i)+" "+value.substring(i+1,value.length);
        }
      }
      value=unescape(value);
    }
  }
  return value;
}
 
 
function init()
{
  var vname = getUrlParameter("vorname");
  var nname = getUrlParameter("nachname");
  document.test.name.value = vname+" "+nname;
}
 //-->
</script>
</head>
<body onLoad="init()">
<form name="test">
<input type="text" name="name" id="name" disabled />
</form>
</body>
</html>

Was habe ich verändert?

Mich hatte es gewundert, dass nur ein Teil des JS Codes in einem Kommentar (<!-- ... //-->) gepackt war. Den //--> habe ich ans Ende geschoben.
Ebenso habe ich die Zeilen
Code:
  else
  { 
    document.write("error"); 
  }
gelöscht.

Und siehe da: Es hat funktioniert.

Dennoch lieben Dank für die Anregungen. Den Thread behalte ich mal gespeichert ;-)

Marcel
 
Zurück