Wie rufe ich eine php-Funktion von javascript-onclick () - Ereignis?
Ich habe zum Beispiel eine php-Funktion:
function DeleteItem($item_id)
{
db_query("DELETE FROM {items} WHERE id=$item_id");
}
Dann, ich habe so etwas wie die folgenden:
<html>
<head>
<script type="text/javascript">
function DeleteItem($item_id)
{
alert("You have deleted item #"+$item_id);
}
</script>
</head>
<body>
<form>
Item 1
<input type="button" value="Delete" onclick="DeleteItem(1)" />
</form>
</body>
</html>
Ich möchte in der Lage sein, rufen Sie die PHP function DeleteItem() aus der javascript function DeleteItem (), so dass ich verwenden können, Drupal ' s db_query () - Funktion, so dass ich nicht haben, um zu versuchen, um eine Verbindung zu der Datenbank aus javascript.
Hat jemand irgendwelche Vorschläge auf, wie dies getan werden könnte? P. S. ich verstehe, dass die PHP-Prozesse auf der server-Seite und javascript Prozesse auf der client-Seite, also bitte keine Antworten, die sagen, dass. Es hat doch irgendeinen trick, was man tun kann, um diese arbeiten aus. Oder vielleicht gibt es einen besseren Weg, das zu tun, was ich versuche zu erreichen.
Sind Sie sicher, dass Sie dies tun wollen? Sie ermöglicht somit den Kunden, überall und zu löschen Sie ALLE Artikel aus Ihrer Datenbank. Keine gute Idee.
Tatsächlich, ich wirklich don ' T WOLLEN, dies zu tun, aber ich habe Probleme das tun, was ich bin, was ich bin versucht zu tun. Drupal hat "Panels" und "Tabs" - Module. Sie können Registerkarten in Ihrem panel für alle oder einige der Inhalte in Ihrem panel. Es gibt jedoch keine Möglichkeit, den Benutzer zu einer bestimmten Registerkarte über einen link oder Anruf.
Also, wenn ich löschen möchte, oder vor allem Bearbeiten Sie ein Element aus einer Liste innerhalb der der 3. Registerkarte,, ich KANN es tun, aber wenn ich den Aufruf der Seite und stellen die Parameter in der URL zeigt er mir die erste tab, wenn ich die Seite neu geladen mit den Parametern anstelle der Registerkarte, die ich möchte. Das macht es so dem Benutzer, klicken Sie auf das 3. tab wieder, das ist ärgerlich für Sie.
Vielleicht eine bessere Frage ist "wie erhalte ich Zugriff auf server-seitige Funktionalität, die von einem web-Seite ohne Seite-reload im browser?" AJAX ist perfekt für diese.
InformationsquelleAutor Brian T Hannan | 2010-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie sich bewusst sind, dass die PHP-Prozesse auf der server-Seite und javascript Prozesse auf der client-Seite müssen Sie auch erkennen, Sie können nicht aufrufen, PHP Funktion aus javascript. Ihre client-side code umleiten kann, um eine PHP-Seite, oder rufen Sie eine PHP-Programm unter Verwendung von AJAX. Diese Seite oder dieses Programm muss auf dem server sein und es sollte viel mehr tun, als nur die eine Zeile haben Sie in Ihrer Funktion. Es sollten auch prüfen, die für die Authentifizierung, Autorisierung, etc.. Sie wollen nicht nur irgendein clientseitiges Skript Sie überall zu rufen, Ihre PHP.
InformationsquelleAutor bmb
Müssen Sie ein PHP Skript zu schreiben, die die Funktion ausführt. Es zu nennen, entweder:
XMLHttpRequest
(aka Ajax), um die Anfrage zu sendenlocation.href
und Rückgabe HTTP Statuscode204 No Content
von PHPja, es sollte; siehe benramsey.com/archives/... für eine Diskussion des status-codes 204 (die ist breit abgestützt) und 205 (das ist nicht)
InformationsquelleAutor Christoph
Möchten Sie ajax.
Auch Datenbank-Verbindung innerhalb des javascript ist etwas, das Sie sollten auch nicht als option - furchtbar unsicher.
Ein sehr einfaches Beispiel:
Ich würde versuchen Sie googeln "jquery ajax tutorial" für einige Ausgangsmaterial
Erstellen Sie ein XMLHTTPRequest-Objekt in JavaScript einige Parameter einstellen, und Feuer aus der Anfrage. Google hat einige große tutorials, versuchen Sie es :).
InformationsquelleAutor Marek Karbarz
kann man eigentlich nicht aufrufen, PHP Funktionen in JavaScript per se. @Christoph schreibt, die Sie benötigen, um call ein PHP-Skript über eine normale HTTP-Anfrage innerhalb von JavaScript mit Hilfe der Magie, bekannt als AJAX (dumm Akronym, bedeutet im Grunde JS laden können externe HTTP-Anfragen auf die Fliegen).
Werfen Sie einen Blick auf die jQuery-AJAX-Funktionen auf, wie zuverlässig eine HTTP-Anforderung über JS, siehe http://docs.jquery.com/Ajax
Alle üblichen Sicherheits-Regeln gelten, d.h. stellen Sie sicher, filtern Sie eingehende Daten-und sicherzustellen, dass es ist, was Sie erwarten (die $item_id in deinem Beispiel). Bedenken gibt es nichts zu stoppen jemand manuell den Zugriff auf die angeforderte URL durch deine JS.
InformationsquelleAutor simonrjones
Erste, jQuery verwenden.
Dann wird der code etwas wie:
InformationsquelleAutor Joel L