简体   繁体   中英

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)
        }
});

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)
                  }
});

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM