Tony: PHP Script funktioniert nicht durch in JS generierten Link

Situation:

Auf der Startseite wird mit Javascript random eine von drei URLs aufgerufen.

Jede dieser drei Seiten verfügt über:
-  ein Formular mit mehreren Radiobuttons und einen Submit button.

  • ein JavaScript was die Zeit vom Laden der Seite bis zum Klicken des Submit buttons misst
  • ein PHP Script, welches die gemessene Zeit und den Wert des Radiobuttons in die Datenbank schreibt

Problem:
Es wird in Firefox und Safari kein Datenbankeintrag vorgenommen, wenn man über die Startseite auf eine der 3 Seiten gelangt,
den Radiobutton auswählt und Submit drückt.

In Opera funktioniert es einwandfrei.

Wenn man die Formularseite nicht über den Link der Startseite aufruft, sondern direkt in die Adresszeile des Browsers einfügt,
funktioniert der Datenbankeintrag ebenfalls.

Wie kann man diese Problem lösen?

-----------------------   Hier das Random URL Script

<SCRIPT language="javascript">

			<!-- URL Selector  
			  
			function RandomURL(text,urls)  
			{  
			RandomURLLong(text,urls,"");  
			}  
			  
			function RandomURLLong(text,urls,hparams)  
			{  
			/\* si: start index  
			\*\* i: current index  
			\*\* ei: end index  
			\*\* cc: current count  
			\*/  
			 si = 0;  
			 ci=0;  
			 cc=0;  
			 urlSet = new Array();  
			 ei = urls.length;  
			  for (i=1;i<ei;i++) {  
				if (urls.charAt(i) == ' ' || urls.charAt(i) == ',') {  
				  urlSet[cc] = urls.substring(si,i);  
				  cc++;  
				  si=i+1;  
				  }  
				}  
			  ind = Math.floor(Math.random() \*cc);  
			  document.writeln("<a "+hparams +" href=\""+urlSet[ind]+"\">"+text+"</a>");  
			}  
			  
			// End Script -->  
			</SCRIPT>  

-----------------------------------------

<script language="javascript">
RandomURL("<h1>START</h1>","http://page1.html,http://page2.html,http://page3.html,");
</script>

  1. Hi!

    Wie kann man diese Problem lösen?

    Die ersten Schritte sind immer wieder dieselben. Wenn du aus der Quelltextanalyse die Ursache nicht erkennen kannst, musst du sie mit Debugging ermitteln. Du weißt ja (hoffentlich) wann was in welcher Reihenfolge ablaufen soll, also kontrollier das mit Hilfe von Kontrollausgaben und/oder Logfile-Einträgen. Wenn du nun weißt, was der genaue Grund für das Nichtfunktionieren ist, kannst du über Lösungsstrategien nachdenken.

    Lo!

  2. Mahlzeit Tony,

    Auf der Startseite wird mit Javascript random eine von drei URLs aufgerufen.

    Das ist nicht korrekt. Zumindest stimmen Beschreibung und Code nicht überein. Der Code erzeugt lediglich einen Link, der als Ziel eine zufällig aus drei URLs ausgewählte besitzt.

    Jede dieser drei Seiten verfügt über:
    -  ein Formular mit mehreren Radiobuttons und einen Submit button.

    • ein JavaScript was die Zeit vom Laden der Seite bis zum Klicken des Submit buttons misst
    • ein PHP Script, welches die gemessene Zeit und den Wert des Radiobuttons in die Datenbank schreibt

    Das müssen wir Dir einfach mal so glauben, da Du die Seite(n) ja nicht zeigst.

    Wenn man die Formularseite nicht über den Link der Startseite aufruft, sondern direkt in die Adresszeile des Browsers einfügt,
    funktioniert der Datenbankeintrag ebenfalls.

    Dann solltest Du vielleicht mal zeigen, wie genau dieser Datenbankeintrag zustandekommt (d.h. wie der Quellcode der drei Dateien aussieht, den Du bisher verschwiegen hast). Denn ganz offensichtlich liegt der Fehler eher dort und nicht im Client-seitigen zufälligen Auswählen der URLs für den Link. Das scheint ja grundsätzlich zu funktionieren - sonst könntest Du den Link ja nicht anklicken.

    Wie kann man diese Problem lösen?

    Zuallererst einmal, indem man *relevanten* Quellcode zeigt - nicht irgendwelchen.

    <SCRIPT language="javascript">

    Falls Du HTML < 5 nutzt: es fehlt das zwingend erforderliche "type"-Attribut.

      		<!-- URL Selector  
    

    Javascript-Code muss man mittels HTML-Kommentaren nur vor Browsern verstecken, die im letzten Jahrtausend ausgestorben sind. Nutzt Du einen solchen?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi,

      		function RandomURL(text,urls)  
      		{  
      		RandomURLLong(text,urls,"");  
      		}  
      		  
      		function RandomURLLong(text,urls,hparams)  
      		{  
    

    ...

      		  document.writeln("<a "+hparams +" href=\""+urlSet[ind]+"\">"+text+"</a>");  
      		}  
    

    RandomURL("<h1>START</h1>","http://page1.html,http://page2.html,http://page3.html,");

    Das erzeugt als HTML also <a href="url"><h1>START</h1></a>.
    In HTML 4.01/XHTML1.0 ist h1 in a nicht zulässig. (HTML5 mag das anders sehen).

    Firefox macht also vermutlich das a zu, bevor h1 anfängt.
    Opera löst diesen Fehler vermutlich anders auf.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.