In Bezug auf PHP (oder wirklich einen Webserver im Allgemeinen) ist eine HTML-Seite nichts komplizierter als eine große Zeichenfolge.
All die ausgefallene Arbeit, die Sie mit einer Sprache wie PHP machen können - Lesen aus Datenbanken und Webdiensten und all das - das ultimative Endziel ist genau das gleiche Grundprinzip: Generieren Sie eine HTML-Zeichenfolge *.
Ihre große HTML-Zeichenfolge wird erst dann zu etwas Besonderem, wenn sie von einem Webbrowser geladen wird. Sobald ein Browser lädt die Seite, dann alle anderen Magie passiert - Layout, Boxmodell Sachen, DOM Generation, und viele andere Dinge, darunter die Ausführung von JavaScript.
Sie rufen also nicht "JavaScript aus PHP auf", sondern "fügen Ihrer Ausgabe einen JavaScript-Funktionsaufruf hinzu".
Es gibt viele Möglichkeiten, dies zu tun, aber hier sind ein paar.
Verwenden Sie nur PHP:
echo '<script type="text/javascript">',
'jsfunction();',
'</script>'
;
Flucht aus dem PHP-Modus in den direkten Ausgabemodus:
<?php
// some php stuff
?>
<script type="text/javascript">
jsFunction();
</script>
Sie müssen keinen Funktionsnamen oder ähnliches zurückgeben. Hören Sie zunächst auf, AJAX-Anfragen von Hand zu schreiben. Du machst es dir nur schwer. Holen Sie sich jQuery oder eines der anderen hervorragenden Frameworks.
Zweitens sollten Sie verstehen, dass Sie bereits Javascript-Code ausführen werden, sobald die Antwort vom AJAX-Aufruf empfangen wurde.
Hier ist ein Beispiel dafür, was Sie mit jQuerys AJAX machen
$.get(
'wait.php',
{},
function(returnedData) {
document.getElementById("txt").innerHTML = returnedData;
// Ok, here's where you can call another function
someOtherFunctionYouWantToCall();
// But unless you really need to, you don't have to
// We're already in the middle of a function execution
// right here, so you might as well put your code here
},
'text'
);
function someOtherFunctionYouWantToCall() {
// stuff
}
Wenn Sie nicht mehr in der Lage sind, einen Funktionsnamen von PHP an den AJAX-Aufruf zurückzusenden, können Sie dies auch tun.
$.get(
'wait.php',
{},
function(returnedData) {
// Assumes returnedData has a javascript function name
window[returnedData]();
},
'text'
);
* Oder JSON oder XML usw.