• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Javacript will nicht wie ich es will

Digi

New member
Hi,

Ich bin Javascript anfänger und versuche eine Webseite als Anzeige für Zuschauer einer Flugshow zu erstellen.

Ich schreibe also in GAMBAS eine Desktopanwendung die Daten an ein Webserver übergibt. Die index.php nimmt die Daten entgegen und erzeugt die Datei pdaten.text.

Code:
Himmel Sone  U 10|
Der Erstflug der J-10 fand im Jahr 1996 statt, jedoch erlitt das Programm 1997 durch einen schweren Unfall einen Rückschlag. Daraufhin wurde die Konstruktion verändert und der neue Prototyp flog 1998, um das Testprogramm fortzusetzen. 2004 wurde das Flugzeug schließlich von den Luftstreitkräften der Volksbefreiungsarmee in Dienst gestellt. .|
Luftikus Wolke  Wölkchen|
15:06 Uhr|
Sonn Schein  Extrall 330  |
15:11 Uhr  |
Alle Piloten zur Besprechung |


Wenn ich die index.php normal aufrufe erscheint eine Webseite wo die Daten angezeigt werden.
Rufe ich sie aber mit Parameter auf index.php?ak=a Bekomme ich einen Timestamp wann die Datei pdaten.text zuletzt geändert wurde.

Der Aufruf index.php?ak=n gibt die Daten ohne HTML aus.

Das Javascript soll nun alle 5 Sekunden den Timestamp abrufen (index.php?ak=a) und wenn er neuer ist als der alte dann die Seite neu Laden. Fiffiger wäre es ja die neuen Daten mit index.php?ak=n anzufordern und die DIV Tags zu erneuern. aber das war mir zu kompliziert.

Ich weis das es nicht Perfekt programmiert ist aber wie schon geschrieben bin ich Neuling in Java und co

flotte grüße Dirk

PHP:
<?php
if (file_exists("pdaten.text"))
      {
	$datei = implode("",file("pdaten.text"));
	$datenarray= explode("|", $datei );
	$pilot1   = $datenarray[0];
	$pilot1i  = $datenarray[1];
	$pilot2   = $datenarray[2];
	$pilot2i  = $datenarray[3];
	$pilot3   = $datenarray[4];
	$pilot3i  = $datenarray[5];
	$lauftext = $datenarray[6];
      }
      
if (isset( $_GET["ak"])   )
    {
      if ($_GET["ak"] == "a")
	{
	  
	  echo filectime("pdaten.text");
	  }
	if ($_GET["ak"] == "n")
	{
	  echo $pilot1."|".$pilot1i."|".$pilot2."|".$pilot2i."|".$pilot3."|".$pilot3i."|".$lauftext;
	  
	  }
      }
else
  {
if (isset( $_POST["p1"])   )
    {
     $pilot1=$_POST["p1"];
     $pilot1i=$_POST["p1i"];
     $pilot2=$_POST["p2"];
     $pilot2i=$_POST["p2i"];
     $pilot3=$_POST["p3"];
     $pilot3i=$_POST["p3i"];
     $lauftext=$_POST["lauf"];
     
     $datei = fopen("pdaten.text", "w");
     fwrite($datei, $pilot1."|\n");   // Name zur Zeit Fliegender Pilot
     fwrite($datei, $pilot1i."|\n");  // Infos zu 1
     fwrite($datei, $pilot2."|\n");   // Als nächstes startet Pilot 2
     fwrite($datei, $pilot2i."|\n");  // voraussichtliche Startzeit
     fwrite($datei, $pilot3."|\n");   // Als nächstes startet Pilot 3
     fwrite($datei, $pilot3i."|\n");  // voraussichtliche Startzeit
     fwrite($datei, $lauftext."|\n"); // Laufschrift
     fclose ( $datei );
     
     echo "ok";
    }
 else
  {
    
      
?>
<!DOCTYPE html>
<html lang="de">

<head>
  <meta charset="UTF-8"/>
  <title>Mega Flugshow</title>


<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<script type="text/javascript">
 <?php echo "var zeit_alt = ".filectime("pdaten.text") ; ?>;
 document.addEventListener("load", hol_daten, false);
 document.addEventListener("DOMContentLoaded", hol_daten, false);


  $(document).ready(function(){ window.setTimeout('hol_daten()', 5000); } );
  function hol_daten(){
   if (window.XMLHttpRequest){
    myAjax = new XMLHttpRequest();
   }
   else{
    //Dieser Code wird als Fallback für den IE5 und IE6 benötigt, da diese die obrige Schreibweise nicht unterstützen.
    myAjax = new ActiveXObject("Microsoft.XMLHTTP");
   }
 
   myAjax.onreadystatechange=function()
   {
     window.setTimeout(hol_daten, 5000);
     if (myAjax.readyState==4 && myAjax.status==200)
       {
	document.getElementById("block").innerHTML = "Letzte Aktualiliesirung  " + new Date();
	if (myAjax.responseText > zeit_alt)
	  {
	    
	    window.location.reload();
	    
	   }
	else
	    {
	      //document.getElementById("block").innerHTML = "responseText ist kleiner" + new Date();
	      }
      }
   };
 
   myAjax.open("GET","http://192.168.2.11/flugshow/index.php?ak=a",true);
   myAjax.send();
  }
	  
	  
 </script>
<div id="output"></div>
<table width="100%" >
<tr> 
    <td width="160"><div id="logo"><img src="logo.png" width="150"></div> </td><td><div id="verein"> Mein Verein</div></td>
</tr>
<tr> 
    <td colspan="2"><div id="ueber">Es Fliegt:</div></td><td></td>
</tr>
<tr> 
    <td colspan="2"><div id="pilot"><?php echo $pilot1;  ?></div></td><td></td>
</tr>
<tr> 
    <td colspan="2"><div id="ueber">Als nächstes startet um ca. <?php echo $pilot2i;  ?></div></td><td></td>
</tr>
<tr> 
    <td colspan="2"> <div id="pilot"><?php echo $pilot2;  ?></div></td><td></td>
</tr>
<tr> 
    <td colspan="2"> <div id="ueber">und voraussichtlich um <?php echo $pilot3i;  ?><br> </div></td><td></td>
</tr>
<tr> 
    <td colspan="2"><div id="pilot"><?php echo $pilot3; ?></div></td><td> </td>
</tr>
<tr> 
    <td colspan="2"><div id="lauftext"><p class="marquee">
      <?php
       echo $lauftext;
      ?></p>
</div></td><td></td>
</tr>
</table>
<div id="block"></div>

</body>
</html>
<?php 
  }
      }// if ak
 ?>

Code:
body {
    background-color:#FFCD33;
}

@-webkit-keyframes marquee {
 0%   { text-indent: 0% }
 100% { text-indent: 100% }
}
@keyframes marquee {
 0%   { text-indent: 0% }
 100% { text-indent: 100% }
}

.marquee {
 width: 100%;
 margin: auto;
 padding: 2px;
 overflow: hidden;
 white-space: nowrap;
 border: solid 1px #CCCCCC;
 animation: marquee 10s linear infinite;
 
}
.marquee:hover {
  animation-play-state: paused;
 -webkit-animation-play-state: paused;
}

#logo {
  border-color:black;
  border-radius: 6px;
  border:3px green solid;
  background-color:#FFCD33;
  height: 100px;
}

#starter1 {
  border-color:black;
  border-radius: 6px;
  border:3px green solid;
  padding-top: 150px;
  padding: 10px;
  border-color:gray;
  background-color:#FFCD33;
  padding-left:10em  ;
  font-size: 20pt;
}

#startinfo {
  display: none;
  
}

#pilot {
  border-color:black;
  border-radius: 6px;
  border:3px green solid;

  background-color:#FFCD33;
  
  
  font-size: 35pt;
  
}
#verein {
 height: 100px; 
background-color:#FFCD33;
font-size: 15pt;
border-color:black;
  border-radius: 6px;
  border:3px green solid;
}
#ueber {
  
background-color:#FFCD33;
font-size: 15pt;

}
#lauftext {
  border-color:black;
  border-radius: 6px;
  border:3px green solid;
background-color:#FFCD33;

font-size: 20pt;
}
 
Was ist denn jetzt genau dein Problem, bzw. was funktioniert nicht? Steht etwas in der Fehlerkonsole?

PS: Willst du wirklich, dass jeder beliebige Nutzer deiner Seite die Daten in der pdaten.txt ändern kann? Dadurch hast du ein Einfallstor für XSS.
PPS:
Fiffiger wäre es ja die neuen Daten mit index.php?ak=n anzufordern und die DIV Tags zu erneuern. aber das war mir zu kompliziert.
Das wäre nicht nur Pfiffiger, sondern auch viel effektiver für den Nutzer. Und so schwer ist das auch gar nicht.
PPPS: Du solltest dringend deinen Code sauber einrücken/formatieren. Macht das verstehen, verwalten und schreiben des Codes um einiges einfacher.
PPPPS: Du willst da irgendwie mit
Code:
$(document).ready(function(){ window.setTimeout('hol_daten()', 5000); } );
jQuery verwenden, bindest aber das Framework gar nicht ein... (http://forum.jswelt.de/javascript-faq/58695-jquery-einbinden-f-r-anf-nger.html )
... und wenn du es dann eingebunden hast, solltest du es auch verwenden - z.B. für das AJAX.
 
Hi,

Danke für die Antwort. Also die Fehlerkonsole im Opera sagt:
Event thread: message
INJECTOR ======http://192.168.2.11/flugshow/index.php?

Das Problem ist das Der Browser anfängt Ressourcen zu fressen und das Script irgendwann stehen bleibt.

Flotte Grüße
 
Diese Ausgabe in der Konsole von Opera ist irgendwie aussagelos... kannst du mal in einem anderen Browser schauen?
 
Hi,

also Firefos, Konqueror, Rekonq, Seamonkey fahren mit die CPU Last gleich auf 100%

Dem Firefox babe ich das entlocken können befor ich ihn killen muste

Failed to load native module at path '/usr/lib/firefox/components/libxpcomsample.so': (80004005) /usr/lib/firefox/components/libxpcomsample.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden
Could not read chrome manifest 'file:///usr/lib/firefox/browser/extensions/%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D/chrome.manifest'.
While creating services from category 'profile-after-change', service for entry 'UpdateNotifier', contract ID '@ubuntu.com/update-notifier;1' does not implement nsIObserver.
DEPRECATION WARNING: Search service falling back to synchronous initialization. This is generally the consequence of an add-on using a deprecated search service API.
You may find more details about this deprecation at: https://developer.mozilla.org/en-US...ference/nsIBrowserSearchService#async_warning
resource://gre/components/nsSearchService.js 3127 SRCH_SVC__ensureInitialized
resource://gre/components/nsSearchService.js 4422 SearchService.prototype.currentEngine
resource://ubufox/distributions/Ubuntu.jsm 85 getProviderForCurrentSearchEngine
resource://ubufox/distributions/Ubuntu.jsm 146 DistroImpl.startpageURI
resource://ubufox/modules/Distro.jsm 119 distro.startpageURI
file:///usr/share/mozilla/extensions/%7Bec8030f7-c20a-464f-9b0e-13a3a9e97384%7D/ubufox@ubuntu.com/components/AboutStartpage.js 68 AboutStartpage.prototype.newChannel
chrome://browser/content/browser.js 10224 _loadURIWithFlags
chrome://browser/content/tabbrowser.xml 5344 loadURIWithFlags
chrome://global/content/bindings/browser.xml 119 loadURI
chrome://browser/content/tabbrowser.xml 2770 loadURI
chrome://browser/content/tabbrowser.xml 1428 loadTabs
chrome://browser/content/browser.js 11186 loadOneOrMoreURIs
chrome://browser/content/browser.js 10558 gBrowserInit._delayedStartup
null 0 null
Deprecated.jsm:79:0
Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead jquery.min.js:1:0
Tastenereignis ist in manchen Tastaturlayouts nicht verfügbar: Taste="c" Modifikatoren="accel,alt" browser.xul
1426901303767 Services.HealthReport.HealthReporter WARN No prefs data found.

flotte Grüße
 
Zuletzt bearbeitet von einem Moderator:
Andere Browser mögen es nicht.
Die CPU Last geht auf 100% hoch und ich mus den Browser killen

mfg Dirk
 
Ich sehe gerade, dass du ja hole_daten() auch im window.onload und DOM-Ready laufen lässt. Das ist unnötig und könnte eventuell das Problem erzeugen.

Du hast ja den Timeout, der schon alleine genug ist.

PS: Auch ist dein XHR in einer globale Variabel gespeichert. Diese sind an sich schon eine schlechte Idee, aber bei einem XHR erzeugt das zusätzliche Probleme.
 
Zurück
Oben