# PHP-Funktion in jQuery Ajax ausführen?



## Jan-Frederik Stieler (15. Oktober 2014)

Hallo,
per jQuery und .ajax kann ich ja eine asynchron eine PHP-Datei ausführen lassen.

```
$(function (){ 
    $('.showrandomname').click(function(){
        $.ajax({
            type: 'POST',
            url: 'modules/mod_randomname/function.php',
            success: function(data){
                $('.name_output').fadeIn().html(data);
            }
        });
    });
});
```

Nur wie bewerkstellige ich das wenn ich nun hier keine ganze PHP-Datei sondern nur eine function innerhalb einer PHP-Datei ausführen lassen will?

Grüße


----------



## sheel (15. Oktober 2014)

Hi

das muss die PHP-Datei wissen/regeln.
zB. einen GET-Parameter bekommen, was gemacht werden soll,
und dann einfach mit _if_ eine Aufteilung ...


----------



## Jan-Frederik Stieler (15. Oktober 2014)

Hi,
okay, das funktioniert. Auch wenn ich ehrlich nicht so wirklich weiß was ich da übergeben soll.
Ich hab jetzt einfach data: 'name=foo', reingeschrieben. Aber das hat so eigentlich keine Relevanz.

Gibts da irgendwas an Standardwert was man in so einem Fall übergibt?

Grüße


----------



## sheel (15. Oktober 2014)

Nicht wirklich.
zB. action=_funktionsname_ ?


----------



## Parantatatam (15. Oktober 2014)

Nach dem MVC-Konzept könnte das dann auf der Serverseite so aussehen:

```
class FunctionController {
  public function action_func1() {
    echo func1();
  }

  public function action_func2() {
    echo func2();
  }

  # ...
}

$controller = new FunctionController();

if ( isset( $_POST[ 'action' ] ) && method_exists( $controller, 'action_' . $_POST[ 'action' ] ) ) {
  $action = 'action_' . $_POST[ 'action' ];
  $controller->$action();
} else {
  header( 'HTTP/1.1 404 Not Found' );
}
```

Und clientseitig dann so:

```
$(function() {
  $( '.showrandomname' ).on( 'click', function() {
    $.ajax({
      'type'    : 'POST',
      'url'     : 'modules?action=func1',
      'success' : function ( data ) {
        $( '.name_output' ).fadeIn().html( data );
      }
  });
});
```


----------



## ComFreek (15. Oktober 2014)

Deine URL (modules/mod_randomname) klingt nach Joomla, vielleicht hast du bereits eine MVC-Architektur, auf die du aufbauen kannst. Auf die Schnelle habe ich Folgendes für Joomla 3.x gefunden: http://docs.joomla.org/J3.x:Developing_a_MVC_Component/Introduction


----------



## Jan-Frederik Stieler (15. Oktober 2014)

Hi,
ja es ist ein Joomlamodul und ja da habe ich schon eine MVC-Architektur. Ich habe nur mit den Dateien so einige Probleme.
So wie @einfach nur crack  das beschreiben hat, hatte ich das eigentlich auch gedacht zu machen, nur ich bekomm immer wieder Probleme damit entweder die Daten aus dem Backendformular (Params) abzufragen oder ich bekomm Probleme mit dem restricted access. Ich beschreib das nochmal etwas konkreter wenn ich mehr Zeit habe.


----------



## ksk (17. Oktober 2014)

Ich kenne mich in php nicht wirklich aus aber wenn ich eine Methode in asp aufrufen will geht das

```
$.ajax({
  type: "POST",
  url: "Seite.aspx/Methode",
  data: null,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (data) {
   $('.name_output').fadeIn().html(data); // oder
   // $('.name_output').fadeIn().html(data.d);
  },
  error: function (e) {
      alert(e.responsetext);
  }
  });
```
Es ist noch anzumerken das diese Methode "statisch" und als WebMethod (Webservice) definiert sein muss.
Ich weiß nicht ob sowas auch in php möglich ist.

Hier noch ein Link wie man eine function in php mit ajax und jquery aufrufen kann
http://glennantoine.com/2012/08/11/phpajax-call-php-function/


Lg
ksk


----------

