2012-05-20 16 views
10

Witam,Metoda połączenia Ajax z klasy php

Chcę wywołać metodę z klasy przez ajax. Klasa jest coś takiego:

class MyClass{ 
     public function myMethod($someParameter,$someParameter2){ 
      //do something 
      return $something; 
     } 
     private function myMethod2($someParameter3){ 
      //do something 
      return something; 
     } 

} 

mogę używać ajax wywołać metodę klasy (myMetod (2,3)) i z powrotem zrobić cos takiego? Czy mogę tego używać w ten sposób?

$.ajax({ 
     url : 'myClass.php', 
     data : { 
        someData: '2,3', 
       } 
     type : 'POST' , 
     success : function(output){ 
        alert(output) 
     } 
}); 

Odpowiedz

7

Musisz utworzyć skrypt php, który wywołuje tę metodę klasy i można nazwać jako żądanie AJAX. Utwórz plik jak:

Dla przykładu:

myfile.php

<?php 

    $date = $_POST; // print_r($_POST); to check the data 

    $obj = new MyClass(); 

    $obj->myMethod($_POST['field1'], $_POST['field2']); 
    $obj->myMethod2($_POST['field1']); 

?> 

I zmienić swój kod jQuery:

$.ajax({ 
     url : 'path/to/myfile.php', 
     data : { someData: '2,3' }, 
     type : 'POST' , 
     success : function(output) { 
        alert(output) 
        } 
}); 
+0

podziękować you.It działa – Razvan

+0

Co zrobić, jeśli chcesz wywołać określoną metodę dla konkretnego wywołania ajax? Czy to możliwe ? – Sadanand

+0

@Sadanand proszę odnieść się do odpowiedzi http://stackoverflow.com/questions/17489109/ajax-request-and-php-class-functions –

3

mogę używać ajax wywołać metodę klasy (myMetod (2,3)) i z powrotem coś zrobić?

Tak, możesz.

ponieważ wywołanie metody klasy wymaga inicjalizacji obiektu w twoim myClass.php musisz utworzyć instancję klasy i przekazać poprawne dane wejściowe, a jeśli metoda klasy zwraca jakiś wynik, po prostu ją oddźnij.

na przykład. z ajax rozmowy, jeśli chcesz zadzwonić myMethod Następnie w myClass.php

//Check for ajax request to instantiate the class. 
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    $object = new MyClass(); 
    //hold the return value in a variable to send output back to ajax request or just echo this method. 
    $result = $object->myMethod($_POST['value'], $_POST['value2']); 
    echo $result; 
}