如何通过ajax调用类中的特定php函数?

时间:2016-01-28 17:49:33

标签: javascript php ajax

我想知道如何调用ajax_check_login类中可用的函数User,此类存在于user.php中。 这是基本内容:

class User extends {
/**
 * Class Constructor
 */
public function __construct() {
}

public function ajax_check_login() {
    try {
        if (!isset($_POST['username']) || !isset($_POST['password'])) {
            throw new Exception('Invalid credentials given!');
        }
        $this->load->model('user_model');
        $user_data = $this->user_model->check_login($_POST['username'], $_POST['password']);
        if ($user_data) {
            $this->session->set_userdata($user_data); // Save data on user's session.
            echo json_encode(AJAX_SUCCESS);
        } else {
            echo json_encode(AJAX_FAILURE);
        }
    } catch(Exception $exc) {
        echo json_encode(array(
            'exceptions' => array(exceptionToJavaScript($exc))
        ));
    }
  }
}

这是我的ajax请求:

 var postUrl = GlobalVariables.baseUrl + 'application/controllers/user.php/ajax_check_login';
 var postData =
 {
     'username': $('#username').val(),
     'password': $('#password').val()
 };

 $.post(postUrl, postData, function(response)
 {
     // Some stuff..
 });

如何查看我想调用ajax_check_login文件中提供的函数user.php。但是我无法直接访问此函数,因为它位于User类内,因此我应该创建另一个文件来退回请求,或者我可以在同一个文件{{1文件?

1 个答案:

答案 0 :(得分:1)

你有一个错字:

class User extends {

扩展什么?

将此添加到user.php(课外):

$allowed_functions = array('ajax_check_login');
$ru = $_SERVER['REQUEST_URI']
$func = preg_replace('/.*\//', '', $ru);
if (isset($func) && in_array($func, $allowed_functions)) {
  $user = new User();
  $user->$func();
}