Отправка данных по ajax на контроллер php

168
30 декабря 2019, 16:30

Делаю тестовое задание.Необходимо реализовать гостевую книгу на MVC.Отправляю данные с формы посредством ajax на контроллер моей гостевой книги,а дальше делаю запрос уже к базе данных.Но в контроллере не могу получить эти данные с формы, чтобы в дальнейшем с ними работать.Проверил запрос уходит на сервер,а в контроллере эти данные получить не могу.Ниже прилагаю мой код.

Файл route.php

<?php
class Route
{
static function start()
{
    $controller_name = 'Guestbook';
    $action_name = 'index';
    $routes = explode('/', $_SERVER['REQUEST_URI']);
    if (!empty($routes[1])) {
        $controller_name = $routes[1];
    }
    if (!empty($routes[2])) {
        $action_name = $routes[2];
    }
    $model_name = 'Model_' . $controller_name;
    $controller_name = 'Controller_' . $controller_name;
    $action_name = 'action_' . $action_name;
    $model_file = strtolower($model_name) . '.php';
    $model_path = "application/models/" . $model_file;
    if (file_exists($model_path)) {
        include "application/models/" . $model_file;
    }
    $controller_file = strtolower($controller_name) . '.php';
    $controller_path = "application/controllers/" . $controller_file;
    if (file_exists($controller_path)) {
        include "application/controllers/" . $controller_file;
    } else {
        Route::ErrorPage404();
    }
    $controller = new $controller_name;
    $action = $action_name;
    if (method_exists($controller, $action)) {
        $controller->$action();
    } else {
        Route::ErrorPage404();
    }
}
function ErrorPage404()
{
    $host = 'http://' . $_SERVER['HTTP_HOST'] . '/';
    header('HTTP/1.1 404 Not Found');
    header("Status: 404 Not Found");
    header('Location:' . $host . '404');
}
}

Файл template_view.php

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Тестовое задание</title>
    <link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css"/>
    <link rel="stylesheet" type="text/css" href="/css/bootstrap-theme.min.css"/>
    <link rel="stylesheet" type="text/css" href="/css/style.css"/>
    <script src="/js/bootstrap.min.js" type="text/javascript"></script>
    <script src="/js/jquery-3.1.1.min.js" type="text/javascript"></script>
</head>
<body>
<div class="wrapper container">
    <header>
        <h2>Гостевая книга</h2>

    </header>
    <div class="row">
        <section class="col-md-12">
            <?php include 'application/views/' . $content_view; ?>
        </section>
    </div>
</div>
    <script>
        $(".form").submit(function(){
            var name = $("#inputName").val();
            var email = $("#inputEmail").val();
            var homepage = $("#inputHomepage").val();
            var text = $("#textarea").val();
            var tags = $("#tags").val();
            var captcha = $("#captcha").val();
            $.ajax({
                type: "POST",
                url: "/guestbook/index",
                data: {
                    name:name,
                    email:email,
                    homepage:homepage,
                    text:text,
                    tags:tags,
                    captcha:captcha
                },
                success: function(data){
                    alert("Данные успешно отправлены");
                    console.log(data);
               }
            });
            return false;
        });
    </script>
</body>
</html>

Файл form.php

<form class="form">
    <h3>Оставить сообщение:</h3>
    <div class="form-group">
        <label for="inputName">Ваше имя:</label>
        <input type="text" class="form-control" id="inputName" placeholder="Введите Ваше имя" require>
    </div>
    <div class="form-group">
        <label for="inputEmail">Адрес email:</label>
        <input type="email" class="form-control" id="inputEmail" placeholder="Введите email" require>
    </div>
    <div class="form-group">
        <label for="inputHomepage">Домашняя страница:</label>
        <input type="url" class="form-control" id="inputHomepage" placeholder="Введите страницу в формате url">
    </div>
    <div class="form-group">
        <label for="textarea">Сообщение:</label>
        <textarea id="textarea" class="form-control"></textarea>
    </div>
     <div class="form-group">
        <label for="tags">Теги</label>
        <textarea id="tags" class="form-control"></textarea>
    </div>
    <div class="form-group">
        <label for="captcha">Капча:</label>
        <input type="text" name="captcha" id="captcha" maxlength="6" size="6"/><img src="/captcha.php"/></td>
    </div>
    <button type="submit" class="btn btn-default">Отправить</button>
</form>

Файл controller_guestbook.php

<?php
class Controller_Guestbook extends Controller
{
function __construct()
{
    $this->model = new Model_Guestbook();
    $this->view = new View();
}
function action_index()
{
    $error = array();
    $post = array(
        'username' => $_POST['name'],
        'email' => $_POST['email'],
        'homepage' => $_POST['homepage'],
        'text' => $_POST['text'],
        'tags' => $_POST['tags']
    );
    if ((!empty($post))||(isset($_REQUEST['captcha']))) {
        $captcha = false;
        if ($_REQUEST['captcha'] == $_SESSION['cap_code']) {
            $captcha = true;
        } else {
            $data['error'] = [[
                'captcha' => 'Капча введена не верно!',
            ]];
        }
        $data['post'] = $post;
        if ((!empty($post))&&($captcha)) {
            $error = $this->model->validate($post);
            if (empty($error) && ($captcha)) {
                $this->model->create($post, false);
                $data['post'] = array();
                $data['success'] = 'Сообщение успешно отправлено';
            } else {
                $data['error'] = $error;
            }
        }
    }
    $data['items'] = $this->model->getAllActiveGuestbook();
    $this->view->generate('guestbook_view.php', 'template_view.php', $data);
}
}
READ ALSO
PHP работа со строками URL

PHP работа со строками URL

Здравствуйте допустим есть страница: https://mysite/profile#access_token=32f4539aeec6311e0d06f2305aeee88fbd9bfc773f885980c40a195672d1fa9247a6177c1746b67c4c779

148
Множественная запись в MySQL

Множественная запись в MySQL

есть таблица в которой редактируются данные и кнопка, по которой это всё сохраняетсяЗапрос изначально выглядел таким образом:

191
не срабатывает условие if

не срабатывает условие if

Вывожу древообразное меню из mysqlПо клику на категорию, выезжают подкатегории (если такие есть)

152
не работает запуск php в консоли

не работает запуск php в консоли

эта команда не работает, никаких ошибок нету

160