Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Ajax / Java Problem bei Mehrfachaufruf

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
tauchvideo
PostRank 2
PostRank 2
Beiträge: 57
Registriert: 01.08.2005, 09:03

Beitrag von tauchvideo » 09.01.2010, 17:28

Ich möchte auf einer Seite per Ajax ein Video einblenden. Ich rufe aus dem Text mit dem Kürzel [video-5] das Video Nr. 5 auf, der Text wird anschließend per PHP umformatiert:

Code: Alles auswählen

$str = str_replace&#40;'&#91;video-'.$row&#91;'id'&#93;.'&#93;', '<div id="video_content_'.$row&#91;'id'&#93;.'"> wird geladen ... </div><SCRIPT LANGUAGE="JavaScript">loadVideo&#40;'.$row&#91;'id'&#93;.'&#41;;</SCRIPT>', $str&#41;;
Die Ajax-Funktion

Code: Alles auswählen

function loadVideo&#40;vid&#41;
&#123;
url = 'videoplayer.php?file_id=' + vid;
 if &#40;xmlHttp&#41; &#123;
     xmlHttp.open&#40;'GET', url, true&#41;;
     xmlHttp.onreadystatechange = function &#40;&#41; &#123;
         if &#40;xmlHttp.readyState == 4&#41; &#123;
             document.getElementById&#40;"video_content_"  + vid&#41;.innerHTML = xmlHttp.responseText;
         &#125;
     &#125;;
     xmlHttp.send&#40;null&#41;;
 &#125;
&#125;
läd dann das angeforderte Video in den Content. Soweit so gut, funktioniert!

Folgendes Problem: Es funktioniert nur dann, wenn im Text 1 Video eingeblendet werden soll. Sobald ein 2. Video hinzukommt, läd die Funktion nur noch das letzte Video nach. Ich vermute es liegt daran, dass das Javascript "loadVideo" mehrfach ausgeführt wird.

Hat jemand eine Idee wie man das lösen könnte?

THX

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 09.01.2010, 17:55

Hat jemand eine Idee wie man das lösen könnte?
Nicht für mehrere gleichzeitig (!) zu ladende Videos dasselbe XMLHttpRequest-Objekt verwenden - das kann es nämlich nicht.

Der Name Ajax kommt nicht von dem Waschmittel, sondern ist eine Abkürzung für Asynchronous Javascript And XML. Das asynchronous bezieht sich auf den Code in XMLHttpRequest-Objekten, der läuft nämlich üblicherweise asynchron, d.h. parallel zum restlichen Javascript-Code (nicht Java, Java ist was völlig anderes). Wenn du also ein Objekt beauftragst, eine URL zu laden, dann wird dieser Auftrag parallel zu dem Code ausgeführt, in dem du den Auftrag erteilt hast.

Das Laden einer URL kann dauern, insbesondere, weil Browser nicht unendlich viele Anfragen gleichzeitig absetzen; sind mehr als ein Limit zu laden, kommt der Rest auf Halde, bis eine vorangehende URL durch ist.
Und gerade, wenn du, wie hier zu sehen, in einer Seite etwas nachlädst, während die Seite selbst noch geladen wird (Bilder etc. zählen wir mal dazu), kann es passieren, dass dein Javascript-Objekt warten muss - und in diesem Zustand setzt du es dann bereits auf eine andere URL an, denn der Auftraggeber, die HTML-Seite läuft ja weiter zum nächsten <script>-Block. Daher wird nur das letzte Video geladen.

tauchvideo
PostRank 2
PostRank 2
Beiträge: 57
Registriert: 01.08.2005, 09:03

Beitrag von tauchvideo » 09.01.2010, 22:38

Ich gebe zu, ich bin noch nicht richtig fit was Ajax und Javascript angeht. Im Prinzip hab ich das auch schon als Fehlerquelle erkannt, ich habe nur keine Idee wie man das lösen kann. Ich hab auch schon an ein Script gedacht, welches nach kompletter Quelltextausgabe erst die Videos im Quelltext sucht und ersetzt (Schleife also). Ich denke aber nicht das dies der Weisheit letzter Schuss ist, irgendwie komme ich aber nicht weiter.

Trotzdem Danke!