Я делаю вызов ajax, который запускается, когда флажок установлен или снят флажок. Я новичок в дизайне PDO mvc. То, что я пытаюсь сделать, - это когда вызов ajax выполняется, сериализованные данные передаются объекту, который вызывает функции, которые устанавливают эти данные в БД.
Ajax:
$('#interests').on('change', 'input', function (e){
e.preventDefault();
var str = $('#interests').serialize();
$.ajax({
type: 'POST',
url: 'index.php',
async: true,
traditional: true,
data: str,
success: function (msg) {
console.log(msg);
}
});
});
Контроллер интереса:
class InterestController
{
function __construct(){}
public function set_user_interest()
{
$table='interests';
$_POST['Username']=$_SESSION['logname'];
$interest = new Interests($_POST, $table);
if ($interest->set_interest()) {
echo "interest were set";
}
else {
echo "something went wrong with interest";
}
# code...
}
Все контроллеры обычно создаются файлом маршрутов, который на основе строки, переданной URL-адресам, создает этот объект.
маршруты:
<?php
function call($controller, $action){
require_once('controllers/' . $controller . '_controller.php');
// create a new instance of the needed controller
switch($controller) {
case 'landing':
$controller = new LandingController();
break;
case 'login':
$controller = new LoginController();
break;
case 'signup_form':
$controller = new SignupFormController();
break;
case 'signup':
require_once 'models/users.php';
require_once 'models/interest.php';
$controller = new SignupController();
break;
case 'interest':
require_once 'models/interest.php';
$controller = new InterestController();
}
// call the action
$controller->{ $action }();
}
// just a list of the controllers we have and their actions
// we consider those "allowed" values
$controllers = array('landing'=>['landing_page', 'error'],
'signup_form'=>['set_signup_form', 'error'],
'signup'=>['create_user', 'error'],
'interest'=>['set_user_interest', 'error']
);
// check that the requested controller and action are both allowed
// if someone tries to access something else he will be redirected to the error action of the pages controller
if (array_key_exists($controller, $controllers)) {
if (in_array($action, $controllers[$controller])) {
call($controller, $action);
} else {
call('landing', 'error');
}
} else {
call('landing', 'error');
}
?>
index.php:
<?php
session_start();
require_once('Water.inc');
if (isset($_GET['controller']) && isset($_GET['action'])) {
$controller = $_GET['controller'];
$action = $_GET['action'];
} else {
$controller = 'landing';
$action = 'landing_page';
}
require_once 'views/layout.php';
?>
Как отправить серийную форму контроллеру, который отправит его в базу данных, используя ajax?