2016-01-28 50 views
0

我想知道如何在我的User類中提供可用的函數ajax_check_login,該類存在於user.php中。 這是基本的內容:如何通過ajax在類內調用特定的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.. 
}); 

你怎麼能看到我想呼籲在user.php文件中可用的功能ajax_check_login。但我不能直接訪問此功能'原因位於User類,所以我應該創建另一個文件來反彈請求,或者我可以在同一個文件user.php文件中做到這一點?

+1

創建一個新的文件,並讓用戶類的對象,並與該對象的幫助下使用的功能。 –

+0

@Engineer像我想象的那樣..因此所有的應用程序MVC都是一個反彈型的functions.php文件(示例),即根據從ajax請求傳遞的內容創建與該模型對應的類的實例,對嗎? – Dillinger

+0

@Dillinger你今天已經問過這個問題了,不是嗎?這個問題發生了什麼? – Gavriel

回答

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(); 
} 
+0

嗎?我想問你一些問題 – Dillinger

+0

你可以加入聊天嗎? – Dillinger