# PHP Code per JavaScript ausführen



## ZockerLordLP (26. September 2013)

Hallo Community 

(ich bin neu also wenn ich etwas falsch mache bitte drauf hinweisen )

Ich würde gerne einen PHP Code per JavaScript oder Ajax bzw Jquery ausführen (bin noch nicht gut in JavaScript )

Ich habe die JavaScript function window.onbeforeunload. Jetzt möchte ich gerne wenn dieses ausgeführt wurde ein PHPScript ausführen. Wie kann ich dies machen?

Danke
 ZockerLordLP


----------



## sheel (26. September 2013)

Hi und Willkommen bei tutorials.de,



> Ich würde gerne einen PHP Code per JavaScript oder Ajax bzw Jquery ausführen
> ...
> Wie kann ich dies machen?


Naja, mit Ajax?

Geht es nur darum, das PHP-Programm zu starten,
oder soll dadurch auch was beim Benutzer im Browser passieren?
(dann wäre das Unload etwas seltsam)


----------



## ZockerLordLP (26. September 2013)

Ich möchte nur den PHP Code ausführen der in einer anderen Datei steht, wenn das Fenster geschlossen wird. In dem PHP File wird dann der User aus der Datenbank gelöscht.


----------



## Dimenson (26. September 2013)

Ja und was ist mit der Antwort von sheel nicht in Ordnung? 

Mit Ajax und onunload : http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onunload

solltest du es hinbekommen.


----------



## ZockerLordLP (26. September 2013)

Okay danke erstmal für den Link . Aber wie kann ich in der Function den Code aus einer PHP Datei ausführen? Also in meinem Fall den User aus der Datenbank löschen, das ist ja mein Problem (Sorry das ich es nicht verstehe ) Könntest du mir evtl. einen Link geben wo dies steht wie ich mit Ajax eine PHP Datei einbinde ?


----------



## sheel (26. September 2013)

```
$.ajax({url: "DieDatei.php", async: false})
```
Fertig
DieDatei.php macht dann eben irgendwas

edit: Das natürlich durch ein onunload aufrufen, nicht einfach so rein.


----------



## ZockerLordLP (26. September 2013)

Ah cool danke


----------



## ZockerLordLP (27. September 2013)

Ich brauche nocheinmal eure Hilfe. Wenn die Seite reloadet wird durch ein Formular wird auch der JavaScriptTeil ausgeführt. Wie kann ich dies mit JavaScript verhindern bzw. Wie verhindere ich das durch ein Button zwar der Code ausgeführt wird aber nicht die Seite neugeladen wird?


----------



## mermshaus (27. September 2013)

Das ist meines Wissens Standardverhalten, dass das nicht passiert.

- http://jsfiddle.net/gYJz3/

Bzw. welcher Code ist in deinem letzten Satz „der Code“? Ich nehme an, nicht dasselbe wie „JavaScriptTeil“?


----------



## ZockerLordLP (27. September 2013)

Ich habe es in einem Formular gemacht mit <input type="submit"> und so wird die Seite beim Drücken neu geladen

Zum Code: Wenn der Button gedrückt wird, wird ein PHP Code ausgeführt der die Daten in eine Datenbank schiebt. Der "JavaScriptTeil" führt ein PHP Code aus wenn die Seite geschlossen wird. 

Kann man dies überhaupt verhindern das bei dem Buttondruck die Seite reloadet wird oder das dir Funktion onbeforunload bei einem Reload ausgeführt wird? Mir geht es ja nur darum, dass der PHP Code NUR beim Schließen der Seite ausgeführt wird


----------



## mermshaus (27. September 2013)

Du kannst das Formular auch per Ajax abschicken.

Ein Suchtreffer für „jquery ajax post form“:

- http://www.mattlunn.me.uk/blog/2012/10/submitting-a-form-as-an-ajax-request-using-jquery/

(Habe es nur überflogen, mag einfacher gehen.)


----------



## ZockerLordLP (27. September 2013)

Ok danke alles funktioniert soweit. Jetzt lade ich die Datein auf den Server hoch und dann kommt diese Fehlermeldung: Cannot modify header information - headers already sent by (output started at ~~~/index.php:19) in ~~~/index.php on line 44. Bei Xampp funktionierte alles wunderbar.

Line 19: <?php
Line 44: header("Location:chat.php");

Was kann ich machen 

(~~~ heißt: habe die Adresse "unsichtbar" gemacht )


----------



## sheel (27. September 2013)

Hi

sowas sollte auch lokal nicht funktionieren, außer man hat automatische Bufferung etc. drin.
Der header-Befehl kann prinzipiell nur verwendet werden,
wenn noch kein Seiteninhalt (HTML etc.etc.) zum Clientbrowser gesendet wurde.
Also ganz am Seitenanfang hin damit.


----------



## ZockerLordLP (27. September 2013)

Ok mache es jetzt mit JavaScript  top.location.href='chat.php'


----------



## mermshaus (27. September 2013)

Oder du befolgst das EVA-Prinzip. (Wäre generell in jedem Fall zu empfehlen.)

- http://phpforum.de/forum/showthread.php?t=221678
- http://www.php.de/wiki-php/index.php/EVA-Prinzip_(Standardverfahren)


----------



## ZockerLordLP (29. September 2013)

Ich brauche noch einmal eure Hilfe. Ich habe jetzt folgenden Code:


```
$( "#link1" ).click(function() {
	$.post( "startseite.php", function( data ) {
    $( "#inhalt" ).html(data );
});
});
```

Wenn ich nun auf den Link klicke zeigt er nur ganz kurz den Inhalt der "startseite.php" an. Ich würde es aber gerne so haben, wenn #link1 angeklickt wird soll "startseite.php" angezeigt werden. Wenn dann #link2 geklickt wird soll nur der Inhalt aus z.B seite2.php gezeigt werden. Wie kann ich dies machen?

Danke


----------



## mermshaus (29. September 2013)

Link im Sinne von a-Element? Dann fehlt da sicher ein Aufruf von preventDefault.

- http://api.jquery.com/event.preventDefault/


----------

