Jak wywołać funkcję JavaScript z PHP?
<?php
jsfunction();
// or
echo(jsfunction());
// or
// Anything else?
Poniższy kod jest od xyz.html (po kliknięciu przycisku) to nazywa wait()
w zewnętrznym xyz.js . To wait()
wywołuje wait.php.
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;
}
}
i czekaj.php
<?php echo "<script> loadxml(); </script>";
gdzie loadxml()
wywołuje kod z innego pliku PHP w ten sam sposób.
W loadxml()
przeciwnym razie działa dobrze, ale nie nazywa się go tak, jak tego chcę.
php
javascript
Zeeshan Rang
źródło
źródło
Odpowiedzi:
Jeśli chodzi o PHP (a tak naprawdę ogólnie serwer WWW), strona HTML jest niczym więcej niż skomplikowanym ciągiem znaków.
Cała wymyślna praca z językiem takim jak PHP - czytanie z baz danych i usług internetowych i tak dalej - ostatecznym celem końcowym jest dokładnie ta sama podstawowa zasada: wygenerować ciąg HTML *.
Twój duży ciąg HTML nie stanie się niczym bardziej specjalnym, dopóki nie zostanie załadowany przez przeglądarkę internetową. Raz w ładunku przeglądarce strona, potem wszystkie inne magia - układ, model box Stuff generacji DOM, i wiele innych rzeczy, w tym wykonanie JavaScript.
Zatem nie „wywołujesz JavaScript z PHP”, „dołączasz wywołanie funkcji JavaScript do swojego wyniku”.
Można to zrobić na wiele sposobów, ale oto kilka.
Używając tylko PHP:
Wyjście z trybu php do trybu bezpośredniego wyjścia:
Nie musisz zwracać nazwy funkcji ani nic takiego. Przede wszystkim przestań ręcznie pisać żądania AJAX. Utrudniasz to sobie. Pobierz jQuery lub jedną z innych doskonałych platform.
Po drugie, zrozum, że będziesz już wykonywał kod javascript po otrzymaniu odpowiedzi z wywołania AJAX.
Oto przykład tego, co myślę, że robisz z AJAX jQuery
Teraz, jeśli nie możesz wysyłać nazwy funkcji z PHP z powrotem do wywołania AJAX, możesz to zrobić.
* Lub JSON lub XML itp.
źródło
Zawsze używam
echo "<script> function(); </script>";
lub coś podobnego. technicznie nie wywołujesz tej funkcji w PHP, ale to tak blisko, jak to tylko możliwe.źródło
echo
do zmiennej wPHP
?Obecnie (luty 2012 r.) Dostępna jest nowa funkcja. Sprawdź tutaj
Przykładowy kod (pobrany z sieci):
źródło
Nie możesz Możesz wywołać funkcję JS z HTML-a wyprowadzanego przez PHP, ale to już coś zupełnie innego.
źródło
To nie jest możliwe. PHP jest językiem po stronie serwera i klientem JavaScript i tak naprawdę niewiele o sobie wiedzą. Będziesz potrzebował interpretera JavaScript po stronie serwera (takiego jak Aptanas Jaxer). Być może tak naprawdę chcesz użyć architektury typu Ajax (funkcja JavaScript wywołuje skrypt PHP asynchronicznie i robi coś z wynikiem).
źródło
Jeśli chcesz wysłać echo do późniejszego wykonania, jest w porządku
Jeśli chcesz uruchomić JS i użyć wyników w PHP, użyj V8JS
Możesz odwołać się tutaj w celu uzyskania dalszych informacji: Jakie są rozszerzenia w php v8js?
Jeśli chcesz uruchomić HTML i JS i użyć danych wyjściowych w PHP http://htmlunit.sourceforge.net/ to twoje rozwiązanie
źródło
PHP działa na serwerze. JavaScript działa w kliencie. Więc php nie może wywołać funkcji JavaScript.
źródło
możesz spróbować tego również:
źródło
spróbuj tak
źródło
Możesz nie być w stanie tego zrobić bezpośrednio, ale biblioteka Xajax jest bardzo blisko tego, czego chcesz. Pokażę na przykładzie. Oto przycisk na stronie internetowej:
Naszym intuicyjnym przypuszczeniem byłoby, że
xajax_addCity()
jest to funkcja JavaScript, prawda? Cóż, dobrze i źle. Fajną rzeczą, na którą pozwala Xajax, jest to, że nie mamy żadnej wywoływanej funkcji JSxajax_addCity()
, ale mamy wywoływaną funkcję PHP,addCity()
która może robić cokolwiek PHP!Pomyśl o tym przez chwilę. Praktycznie wywołujemy funkcję PHP z kodu JavaScript! Ten zbyt uproszczony przykład miał pobudzić apetyt. Lepszym wyjaśnieniem jest strona Xajax, baw się dobrze!
źródło