andyah
Goto Top

PHP-Funktion in JavaScript ausführen

Hi NG,

wie führe ich eine PHP-Funktion mir JavaScript aus? Sowohl die PHP-Funktion als auch das JavaScript stehen in der selben PHP-Datei.

Code:

<?php

function test()
{
   echo "Test";  
}

echo '<script type="text/javascript">  
      if(window.confirm("Wollen Sie das wirklich tun?") == true)  
      { 
        //Funktion -Test- ausführen
      }
      </script>';    
?>

Das Code-Tag wird schon wieder nicht angezeigt!

Gruß
Andy

Content-Key: 205107

Url: https://administrator.de/contentid/205107

Printed on: April 19, 2024 at 23:04 o'clock

Member: Hitman4021
Hitman4021 Apr 17, 2013 at 05:56:21 (UTC)
Goto Top
Hallo,

sowas macht man normalerweise über einen Ajax Request.
Soweit ich weiß gibt es auch keine Möglichkeit diese Funktion so auszuführen.

Gruß
Member: AndyAh
AndyAh Apr 17, 2013 at 06:16:52 (UTC)
Goto Top
Hi,

gibst du mir evtl. ein paar deutschsprachige Links zu diesem Thema? Ich habe mich damit noch nicht auseinandergesetzt.

Gruß
Andy
Member: michi1983
michi1983 Apr 17, 2013 at 07:52:09 (UTC)
Goto Top
Hallo,

ist das denn überhaupt möglich?
PHP ist ja serverseitig und Javascript is clientseitig.
Oder irre ich, dass das nicht funktionieren kann weil das Javascript ja erst geladen wird wenn die Seite komplett geladen ist?

MfG
Michi
Member: dog
dog Apr 17, 2013 at 08:17:43 (UTC)
Goto Top
ist das denn überhaupt möglich?

Jein.
PHP kann nicht mit Javascript interagieren (außer über AJAX).
Man kann aber in PHP einen JS-Funktionsaufruf ausgeben, der nach dem Laden der Seite ausgeführt wird.
Member: Guenni
Guenni Apr 17, 2013 at 09:47:14 (UTC)
Goto Top
Hi Andy,

genauso wie du im PHP-Code JS ausgibst, . . .

echo '<script type="text/javascript">  
      if(window.confirm("Wollen Sie das wirklich tun?") == true)  
      { 
        //Funktion -Test- ausführen
      }
      </script>';    

. . . gibst du im JS-Code PHP aus.

<?php
function test(){
 echo "Ich bins, PHP";  
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
</head>
<body>
<script type="text/javascript">  
<!--
if(window.confirm("Wollen Sie das wirklich tun?") == true) 
      { 
        document.write("<?php test();?>"); //Den PHP-Code ins Dokument schreiben. 
      }

// -->
</script>
</body>
</html>

Gruß
Günni
Member: AndyAh
AndyAh Apr 17, 2013 at 10:44:06 (UTC)
Goto Top
Hi Günni,

danke für den Tip. Es funktioniert.

Gruß
Andy
Member: Guenni
Guenni Apr 17, 2013 at 23:16:48 (UTC)
Goto Top
Zitat von @AndyAh:
Hi Günni,

danke für den Tip. Es funktioniert.

Gruß
Andy

Hi Andy,

naja, funktionieren . . . Es kommt vielleicht drauf an, was man mit so einem Konstrukt machen will.

Ich hab' hier mal was anderes probiert. Den PHP-Funktionsaufruf lasse ich von einer JS-Funktion ausführen.

Im body-Bereich wird ein Link auf die JS-Funktion gesetzt.

Script:

<?php
function test(){
 $conn = mysql_connect("localhost","user","passwort");  
	mysql_select_db("test");  
	$query = "select * from tabelle2";  
	$result = mysql_query($query, $conn);
	while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
	 echo implode(' | ',$row).'<br>';  
	}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function test(){
 document.write("<?php test();?>"); 
 document.write('<a href="javascript:window.history.back()">Zurück</a>'); 
}
// -->
</script>
</head>
<body>
<a href="javascript:test()">Test</a>   
</body>
</html>

Klicke ich den Link an, so wird die JS-Funktion aufgerufen, die wiederum ruft die PHP-Funktion auf und "voila": Das Ergebnis der Tabellenabfrage erscheint.

Dass die JS-Funktion die PHP-Funktion "wirklich" aufruft, ist aber (m.M. nach) nur scheinbar. Denn wenn du dir den Quelltext vom Script anzeigen läßt, steht da:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function test(){
 document.write("5 | Paul | Dürheim | 68746468 | Krefeld | verkauf | 2001<br>6 | Hans-Dieter-Heinz | Gerhards | 231384354 | Hamburg | verkauf | 2001<br>7 | Paul | Nowottny | 3446168484 |  

Osnabrück | einkauf | 2003<br>8 | Günter | Pappon | 01735370126 | Viersen | einkauf | 2004<br>9 | Paul | Kamps | 9154864 | Köln | einkauf | 2006<br>11 | Franz | Xaver | 0987654321 | 

Düsseldorf | personal | 2006<br>13 | Horst-Eugen | Flug | 31690 | Viersen | personal | 2006<br>14 | Monika | Junker | 091857365 | Karlsruhe | versand | 2007<br>17 | Monika | Schmidt | 8854844 | 

Karlsruhe | versand | 2007<br>18 | Paul | Schmitt-Müller | 8854844 | Trier | lager | 2007<br>19 | Heike | Schmitz | 8854844 | Dortmund | lager | 2010<br>20 | Horst | Schmied | 8854844 | Krefeld | 

lager | 2010<br>21 | Martina | Schimanski | 987654 | Buxtehude | lager | 2011<br>23 | Hans | Schmidt | 8854844 | Viersen | lager | 2011<br>"); 
	document.write('<a href="javascript:window.history.back()">Zurück</a>'); 
}
// -->
</script>
</head>
<body>
<a href="javascript:test()">Test</a>   
</body>
</html>

Heißt: Die PHP-Funktion wurde bereits beim Laden der Seite ausgeführt, und die JS-Funktion gibt nur noch das Ergebnis wieder.

Gruß
Günni