PDO: Как отправить сериализованные данные ajax на php-контроллер?

Я делаю вызов 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?

php,jquery,ajax,

0

Ответов: 1


0


Выберите страну
">
Выберите пункт«
Выбрать город »

<script type="text/javascript">

$(document).ready(function(){

    $("#COUNTRIES").change(function(){
    var CID =  $('#COUNTRIES').val();
    $.ajax({
        method:'post',
        url:'<?php echo base_url('index.php/Userc/SERVICE2') ?>',
            data: {"CID":CID},
                dataType:'json',
                success: function(result){                                      
                $('#STATES').html(result); },                                       
            });     
        });

// ********************* контроллер ****************** //

public function SERVICE2(){

    if ($this->input->post('CID')) {
            $CID = $this->input->post('CID');
               $where = array('CID' => $CID);
                $query['P'] = $this->Model1->displaywhere('states',$where);
                        $html = '<option>Select State</option>';
                        foreach($query['P'] as $row) {  

    $html .="<option value=".$row['SID'].">".$row['SNAME']."</option>";}
            echo json_encode($html); // must..}
PHP, JQuery, AJAX,
Похожие вопросы