PHP PHP Function mit JS/Ajax ausführen

Twisterking

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.726
Hi all!

Würde gerne eine php-function innerhalb einer Seite mittel JS oder Ajax aufrufen, wobei die auf keinen Fall die ganze Seite neu geladen werden darf! Optimal wäre wenn das ganze über einen Button/Hyperlink ginge der dann per display oder so (NICHT alert --> keine Textbox sondern innerhalb der Seite sozusagen) einfach das anzeigt, was die PHP Function, die eben aufgerufen wurde, per echo ausspuckt!

Ist das möglich? ^^ :)

mfg
Twist
 
Ja, das geht. Mithilfe von AJAX rufst du eine PHP-Datei mit Parametern auf. Die Ausgabe des Skripts kannst du dann mit AJAX weiterverarbeiten.


Edit: Klick dich mal hier durch. Da ist alles sehr schön beschrieben.
 
du hast doch schon alles geschrieben, wo gibts da jetzt ein problem? du rufst mit ajax eine php-datei auf, in der der echo ausgeführt wird. mehr brauchst du nicht.
 
Bin leider in AJAX ein totaler noob und kenne mich nur mit PHP usw. so richtig aus!
Kann mir jmd von euch vll ein paar Codeschnippsel geben? :)

Mir würde schon reichen ein Button, der bei KLick darunter (vll sogar animiert) Hallo schreibt, wobei das "Hallo" von einer PHP function kommen muss die wieder das "Hallo" per echo ausspuckt!
Wäre dafür sehr dankbar! :)

mfg
Twist
 
PHP:
function CreateXmlHttpObjet()
{
  var xmlHttp = null;

  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  }
  catch( e )
  {
    // Internet Explorer
    try
    {
      xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP" );
    }
    catch( e )
    {
      xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
  }
  
  return xmlHttp;
}

function foo()
{
  xmlHttp = CreateXmlHttpObjet();
  
  if( xmlHttp == null ) return ;
  
  xmlHttp.onreadystatechange = function()
  {
    <element> = xmlHttp.responseText;
  }
  xmlHttp.open( 'GET', '<hier die url des scripts>', true );
  xmlHttp.send( null );
}

foo() ein wenig abändern und schon kannst du mit ajax umgehen. ;)
 
Herzlichsten Dank ... hab zwar (noch) absolut keine Ahung (:D) aber werd mich da mal reinlesen! :)

mfg
 
so schwer ist die funktion nicht zu verstehen. nehmen wir mal an du willst irgendwas von google in einen div-block anzeigen lassen. das wäre dann folgendes:

PHP:
function getgoogle()
{
  xmlHttp = CreateXmlHttpObjet();
  
  if( xmlHttp == null ) return ;
  
  xmlHttp.onreadystatechange = function()
  {
    document.getElementById( 'googlebox' ).innerHTML = xmlHttp.responseText;
  }
  xmlHttp.open( 'GET', 'http://www.google.de/irgendwas/hier/dahinter.php', true );
  xmlHttp.send( null );
}

ob das bei einem div-block jetzt innerHTML heißt oder anders weiß ich jetzt nicht auf anhieb. da müsstest du mal bei selfhtml nachschaun. die funktion rufst du dann über ein onclick-event auf:

HTML:
<div id="googlebox">&nbsp;</div>
<!-- ... -->
<input type="button" value="getgoogle()" onclick="javascript:getgoogle()" />
 
@ ClaW:

Und die URL deiner "google File" ('http://www.google.de/irgendwas/hier/dahinter.php") ersetz ich dann mit meiner PHP Function die ich einfach per <? php include .... ?> include oder wie? Sry für meine "Dummheit"!

@ Darii:

Damit kann ich irgendwie nix anfangen -.-! :(
Mein problem is ich seh da nirgendswo was ich damit aufrufe ...
 
Twisterking schrieb:
Und die URL deiner "google File" ('http://www.google.de/irgendwas/hier/dahinter.php") ersetz ich dann mit meiner PHP Function die ich einfach per <? php include .... ?> include oder wie? Sry für meine "Dummheit"!

nicht mit der funktion ersetzen, sondern du erstellst eine einzelne php-seite welche das ergebnis ausgibt. du kannst natürlich auch die seite ansteuern, die gerade angezeigt wird und hängst als parameter dann irgendwas mit ?ajax=<function> dahinter.

ein beispiel wäre z.b. folgendes:

html:
HTML:
<script type="text/javascript">
<!--
function getphpinfo()
{
  xmlHttp = CreateXmlHttpObjet();
  
  if( xmlHttp == null ) return ;
  
  xmlHttp.onreadystatechange = function()
  {
    document.getElementById( 'phpinfobox' ).innerHTML = xmlHttp.responseText;
  }
  xmlHttp.open( 'GET', 'http://www.domain.tld/ajaxseiten/phpinfo.php', true );
  xmlHttp.send( null );
}  
-->
</script>

<div id="phpinfobox">&nbsp;</div>
<!-- ... -->
<input type="button" value="PHP Info" onclick="javascript:getphpinfo();" />

das script ruft also nun die seite phpinfo.php auf dem server domain.tld im ordner ajaxseiten auf. der code dahinter wäre dann folgender:

PHP:
<?php echo phpinfo(); ?>

die komplette ausgabe des php-scriptes wird also in die box 'phpinfobox' geschrieben (durch das = xmlHttp.responseText -> beinhaltet die empfangenen daten).

wenn du ein mal drin bist, dann weißt du was zu tun ist. ;)

Twisterking schrieb:
Damit kann ich irgendwie nix anfangen -.-! :(
Mein problem is ich seh da nirgendswo was ich damit aufrufe ...

einarbeitungszeit brauchst du dafür wie woanders auch, nur sind dort schon methoden und objekte vorhanden, für die du evtl. wochen brauchst um diese zu realisieren. wenn man also ein mal drin ist und weiß wie es funktioniert, musst du dir nichts mehr selbst basteln.
 
Noche ine Frage an euch:

Kann ich irgendwie eine Variable von dieser JS Function ausgehend an die PHP function "phpinfo.php" (siehe Bsp. oben) übergeben?

EDIT:
Außerdem hab ich mit obigem Code folgendes Prob (laut Firefox fehlerkonsole):

"Fehler: CreateXmlHttpObject is not defined
Quelldatei: http://domain.com/bla.php
Zeile: 9"

mfg
 
Zuletzt bearbeitet:
arbeite dich lieber gleich in etwas für einen längeren Zeitraum brauchbares ein.
jQuery mootools... das macht die ganze sachen einfacher.
damit kann man sicher auch variablen übergeben ;)
Ansonsten bleibt dir eine sehr einfache Möglihckeit:
myPhpScript.php?var1=value1&var2=value2 etc.
und diese variablen kannst du dann in dem script mittels $_GET['var1'] bzw $_REQUEST['var1'] abgreifen.
 
Hmm ja danke für den Tipp!
Aber trotzdem mal was grundsätzliches: schaut euch bitte folgenden code an:

Code:
<html>
  <head>
    <title>TEST</title>
    <script src="xmlhttp.js" type="text/javascript">
xmlhttp=false
</script>

</head>
<body>

 <script type="text/javascript">

function example1(id) {
 xmlhttp.open("POST", "player.php",true);
 xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
   document.getElementById( 'player' ).innerHTML = xmlhttp.responseText;
  }
 }
 xmlhttp.setRequestHeader("Pragma", "no-cache");
 xmlhttp.setRequestHeader("Cache-Control", "must-revalidate");
 xmlhttp.setRequestHeader("If-Modified-Since", document.lastModified);
 xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
 var linkfolgenid = "linkfolgen";
 [COLOR="Red"]xmlhttp.send(linkfolgenid+"="+id);[/COLOR]
}
</script>
<p class="example"><a href="#" onclick="example1(franz);return false;">Try the example.</a></p>

<div id="player">&nbsp;</div>
</body>
</html>

das rot markierte macht mir die probleme. ich brauch die funktion in einer for-schleife (noch nicht eingebaut), deshalb die zusammengesetzte variable (id würde dann durchlaufen). nur javascript mag meine zusammengesetzte variable nicht. macht man das leicht anders? habt ihr da eine idee?

ohne zusammengesetzter variable gehts nämlich (also zb nur mit "linkfolgen" ohne id)!

(sinn des script: hier das wort "franz" (platzhalter) wird an player.php geschickt und soll dort weiterverarbeitet werden - oder mehrere wenn for schleife eingebaut wird)

mfg
 
Zurück
Oben