Razvan
Razvan

Reputation: 731

Ajax call method from class php

Hi ,

I want to call a method from a class through ajax. The class is something like this :

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

}

Can i use ajax to call a class method (myMetod(2,3)) and with the return to do someting? Can i use it like this?

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

Upvotes: 10

Views: 16527

Answers (2)

Ibrahim Azhar Armar
Ibrahim Azhar Armar

Reputation: 25735

Can I use ajax to call a class method (myMetod(2,3)) and with the return to do something?

yes you can.

since calling the class method needs the initialization of the object in your myClass.php you need to instantiate the class and pass the proper input, and if the class method is to return some output just echo it.

for example. from your ajax call if you want to call myMethod then in your 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;
}

Upvotes: 3

Naveed
Naveed

Reputation: 42093

You need to create php script that calls this class method and can be called as ajax request. Create a file like:

For Example:

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'] );

?>

And change your jQuery code to:

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

Upvotes: 8

Related Questions