Wie rufe ich eine JavaScript-Funktion von PHP aus auf?
<?php
jsfunction();
// or
echo(jsfunction());
// or
// Anything else?
Der folgende Code stammt aus xyz.html (bei einem Klick auf eine Schaltfläche) und ruft a wait()
in einer externen xyz.js auf . Dies wait()
ruft wait.php auf.
function wait()
{
xmlhttp=GetXmlHttpObject();
var url="wait.php"; \
xmlhttp.onreadystatechange=statechanged;
xmlhttp.open("GET", url, true);
xmlhttp.send(null);
}
function statechanged()
{
if(xmlhttp.readyState==4) {
document.getElementById("txt").innerHTML=xmlhttp.responseText;
}
}
und wait.php
<?php echo "<script> loadxml(); </script>";
Dabei wird loadxml()
Code aus einer anderen PHP-Datei auf die gleiche Weise aufgerufen.
Das loadxml()
funktioniert sonst gut, aber es wird nicht so genannt, wie ich es will.
php
javascript
Zeeshan Rang
quelle
quelle
Antworten:
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:
Flucht aus dem PHP-Modus in den direkten Ausgabemodus:
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
Wenn Sie nicht mehr in der Lage sind, einen Funktionsnamen von PHP an den AJAX-Aufruf zurückzusenden, können Sie dies auch tun.
* Oder JSON oder XML usw.
quelle
Ich benutze immer nur
echo "<script> function(); </script>";
oder ähnliches. Sie rufen die Funktion in PHP technisch nicht auf, aber dies ist so nah wie möglich.quelle
echo
in eine Variable in zurückgebenPHP
?Ab sofort (Februar 2012) gibt es dafür eine neue Funktion. Überprüfen Sie hier
Codebeispiel (aus dem Internet entnommen):
quelle
Das kannst du nicht. Sie können eine JS-Funktion aus HTML aufrufen, das von PHP ausgegeben wird, aber das ist eine ganz andere Sache.
quelle
Das ist doch nicht möglich. PHP ist eine serverseitige Sprache und eine JavaScript-Client-Seite und sie wissen nicht wirklich viel voneinander. Sie benötigen einen serverseitigen JavaScript-Interpreter (wie Aptanas Jaxer). Vielleicht möchten Sie tatsächlich eine Ajax-ähnliche Architektur verwenden (die JavaScript-Funktion ruft das PHP-Skript asynchron auf und macht etwas mit dem Ergebnis).
quelle
Wenn Sie es für eine spätere Ausführung wiedergeben möchten, ist es in Ordnung
Wenn Sie JS ausführen und die Ergebnisse in PHP verwenden möchten, verwenden Sie V8JS
Sie können hier für weitere Referenz verweisen: Was sind Erweiterungen in PHP v8js?
Wenn Sie HTML & JS ausführen und die Ausgabe in PHP verwenden möchten, ist http://htmlunit.sourceforge.net/ Ihre Lösung
quelle
PHP läuft auf dem Server. JavaScript wird im Client ausgeführt. PHP kann also keine JavaScript-Funktion aufrufen.
quelle
Sie können dieses auch versuchen: -
quelle
versuche es so
quelle
Möglicherweise können Sie dies nicht direkt tun, aber die Xajax- Bibliothek ist ziemlich nah an dem, was Sie wollen. Ich werde mit einem Beispiel demonstrieren. Hier ist eine Schaltfläche auf einer Webseite:
Unsere intuitive Vermutung wäre, dass
xajax_addCity()
es sich um eine Javascript-Funktion handelt, oder? Nun, richtig und falsch. Das Coole, was Xajax erlaubt, ist, dass wir keine JS-Funktion habenxajax_addCity()
, aber was wir haben, ist eine PHP-Funktion namensaddCity()
, die alles kann, was PHP macht!Denken Sie eine Minute darüber nach. Wir rufen praktisch eine PHP-Funktion aus Javascript-Code auf! Dieses stark vereinfachte Beispiel diente nur dazu, den Appetit anzuregen. Eine bessere Erklärung finden Sie auf der Xajax-Website. Viel Spaß!
quelle