In Javascript-Datei das Ausführen einer PHP-Datei anwerfen

Hallo liebe bplaced-Gemeinde,

ich habe ein schwerwiegendes Problem beim Programmieren einer Seite und finde einfach keine Lösung:

In meiner HTML-Seite wird die PHP-Datei ausgeführt mittels:

Sozusagen werden damit die Startwerte initialisiert.

Schön und gut, in der PHP-Datei wird dann ein Javascript-Code-Aufruf generiert und in einer externer Javascript-Datei wird dann dieser ausgeführt (diese wird natürlich wie die PHP-Datei in der HTML-Datei eingebunden).

Nun mein Problem:
Ich möchte, das in der Javascript-Datei beim “OnClick-Event” bei einem dann wieder diese oben genannte PHP-Datei angesprochen wird, damit sich der Kreislauf wiederholt (z.B. mit init=2), natürlich dann aber andere Images erzeugt.

Wie kann ich das erreichen?

document.write(’’); document.close
bewirkt leider nichts, es lädt sich einfach nur tot.

Liebe Grüße Basti

Gängiges Stichwort: AJAX

Ob das in deinem Fall die beste Lösung ist, kann ich dir momentan nicht sagen, da dazu einfach deine Beschreibung dessen, was du eigentlich bezwecken willst, zu schwammig ist.

Bitte gewöhne dir an, in solchen Fällen erst mal zu beschreiben, was das ganze eigentlich soll, was du erreichen willst - bevor du überhaupt auf technische Einzelheiten eingehst. Denn wenn du mit der Wahl der technischen Mittel ggf. schon auf dem Holzweg bist, kann das einer sinnvollen Umsetzung durchaus im Wege stehen.

Inhalt der PHP-Datei:

[code]// don’t allow browsers to cache the contents of this page because it may change
header(‘Cache-Control: no-cache, must-revalidate’);
header(‘Pragma: no-cache’); // for HTTP/1.0
header(‘Expires: Thu, 01 Jan 1970 00:00:00 GMT’);

if (isset($_GET[‘init’])) {

$abfrage<
@header(‘Content-type: text/javascript’);
while ($row = mysql_fetch_object($result)) {
$x = $row->x;

// we are returning javascript code which will call the addnote function
echo “addnote(’$x’); \n”;
}
}
[/code]
–> sozusagen werden hier z.B. 4x die JavaScript-Addnote-Funktion ausgeführt

Inhalt der JS-Datei:

[code]// the list element
var list = document.getElementById(‘list’);

// seperator between the actual list and the add link
var sep = list.appendChild(document.createElement(‘br’));

function addnote(x) {
var item = list.insertBefore(document.createElement(‘li’), sep);

var edit = item.appendChild(document.createElement(‘img’));
edit.src = imagelink;
edit.style.display = ‘inline’;
edit.style.width = ‘270’;
edit.style.height = ‘400’;
edit.onclick = function() { alert(‘lala’+x); };
edit.style.cursor = ‘pointer’;
}[/code]

Inhalt der html-Datei:

[code]

  • [/code]

    Bezwecken:
    in den Bereich “stage” werden z.B. 4 Bilder per Javascript “hinzugefügt” (diese werden dann mittels einer anderen JS-Datei eigenständig animiert). Nun soll man beim Klick auf eines dieser Bilder neue Bilder reinladen, indem man z.B. dann halt init=2 “aufruft”, wenn man auf ein Bild klickt.

    Alles funktioniert so wie es soll, außer: das es eben nicht die neuen Bildern beim Klicken auf ein Bild aufruft, weil ich nicht weiss, was ich bei der Javascript-Datei reinschreiben könnte (bei edit.onclick), das er die init=2 “anstößt”.

    Hi,

    poste doch bitte immer nen Link zu deiner Seite dazu is für uns einfacher (außer das projekt is geheim xD).
    Tipp: Pack doch den Code in die Code Tags ( [ c o d e ] ohne leerzeichen)

    lg flo

    //edit: außerdem wenn der html code genau so ist wie du’s gepostet hast dann is des schon mal nicht vaide und man kann fehler schlechter analysieren :wink:

    Wenn es nur darum geht per Klick ein externen php-script aufzurufen kann man als Alternative zu Ajax folgendes machen:
    Die php-Datei wird mittels javascript per Klick in ein (unsichtbaren) iframe geladen.
    Zum Code kann ich nur sagen, ich blick da nicht durch.

    Pit

    Es scheint mir viel einfacher zu sein, das Ereignis gleich im Bild
    abzufragen und dann das Bild dazu zu veranlassen, sich durch eine
    neue Version zu ersetzen, geht ganz ohne javascript etwa mit einem
    SVG-Bild, welches per PHP erzeugt wird.
    Einige Modifikationen kann man in SVG sogar ohne Aktualisierung der
    Datei per Animation erreichen, ist dann eine einfache statische Datei.

    Auf die Gefahr hin das ich ausgeschlossen werde.
    Soweit ich dein Anliegen und Code verstanden habe. Möchtest du beim Aufruf der Seite zufällig 4 Bilder laden. Die soweit schön aussehen und wenn man auf eins der Bilder klick erscheinen wieder 4 neue Bilder ohne dabei einen Reload der Seite starten.

    Falls das so ist wäre eine PHP / jQuery Lösung einfacher zu realisieren.

    Du lädst beim ersten Aufruf mit PHP die Zufallsbilder danach machst du einfach vom jQuery Image Replacement gebrauch. Das ganze kannst du einfach an ein .click hängen. Du könntest somit sogar im html Code das nächst mögliche Bild bestimmen.

    Innerhalb von (X)HTML kann man natürlich auch einfach ein
    object oder iframe nehmen, damit ein PHP-Skript mit
    (X)HTML-Ausgabe einbetten, in dem sich im Wesentlichen ein
    Verweis auf sich selbst befindet, der als Inhalt die aktuellen Bilder
    hat. Das Skript wählt dann bei jedem Aufruf einfach neue Bilder
    aus. Das eignet sich dann besonders, wenn man nur Bilder in
    Formate wie JPEG/JFIF oder PNG hat, die nicht interaktiv sind.

    [quote=“pit”]Wenn es nur darum geht per Klick ein externen php-script aufzurufen kann man als Alternative zu Ajax folgendes machen:
    Die php-Datei wird mittels javascript per Klick in ein (unsichtbaren) iframe geladen.
    Zum Code kann ich nur sagen, ich blick da nicht durch.

    Pit[/quote]

    Wie muss ich mir das genau vorstellen?
    Kannst du mir da ein kleines Beispiel zeigen?
    Das iframe muss ja dann in die HTML-Datei oder?

    Ansich müsste es ja nur beim Klick auf das Bild (beim Auslösen von OnClick) die PHP-Datei mit dem neuen Wert anstoßen, damit diese dann alles neu lädt (dies aber im Hintergrund, weil ja die HTML-Datei im Vordergrund ist).

    Der iframe ist im html-code, dessen src wird per click geladen, in etwa so:

    <iframe width="0" height="0" id="result" src="create.php?init=1">
    </iframe>
    <button onclick='document.getElementById("result").src = "create.php?init=2"'>Neu laden</button>

    Dein php-script wird auf dem Server abgearbeitet, das Ergebnis landet aber im unsichbaren iframe. Auf der html seite ändert sich gar nix! Dein php-script kann aber serverseitig etwas in eine DB schreiben oder so.
    Ich glaub aber du möchtest etwas anderes erreichen. Ich blick jedoch immer noch nicht durch was.

    Bei einer angemessen kleinen Anzahl von Bildern ists sogar noch schicker alle intial zu laden und dann zB per JS die Position / Anzeige zu ändern ^^
    Könntest auch aus allen Bildern eins machen und als Sprite benutzen xD
    je nach dem was du eigentlich vor hast

    Mein Prob ist nun, selbst mit Ajax, wo ich einfach in

    die Images reinlade, funktioniert es nicht. Es erscheint einfach gar kein Bild. Und wenn ist es dann nicht “animiert” (wenn ich als Klasse beim Bild “default” festlege).

    Ich weiss langsam überhaupt nicht mehr weiter.

    Ich hoffe ihr könnt mir helfen.

    Liebe Grüße Basti

    Bitte was?
    Bilder würd ich nicht in die Datenbank legen, höchstens Referenzen (Filesystem-Pfade).
    Ein “funktioniert nicht” ohne gelieferten Code der funktionieren soll funktioniert nicht.