Как отправить AJAX в одной точке входа - PullRequest
0 голосов
/ 12 сентября 2018

Возник такой вопрос, необходимо при просмотре загрузки отправить ajax, но из-за того, что создана единая точка входа, не можете указать адрес.

Код: .htaccess:

AddDefaultCharset UTF-8
Options -Indexes
Options +FollowSymLinks
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Написан самый простой маршрутизатор, который сканирует $ _SERVER ['REQUEST_URI'] и разбивает его на части. Пример кода слишком длинная публикация, но я попробую. /app/core/route.php:

<?php
class Route
{
    static function start() 
    {
        $controller_name = 'Main';
        $action_name = 'index';
        $params = null;
        $routes = explode('/', $_SERVER['REQUEST_URI']);
        if (!empty($routes[2])){ #
            $controller_name = $routes[2];
        }
        if (!empty($routes[3])){ 
            $action_name = $routes[3];
        }
        if (!empty(array_slice($routes, 4))) { 
            $params = array_slice($routes, 4);
        }

        $model_name = 'Model_' . $controller_name; 
        $controller_name = 'Controller_' . $controller_name; 
        $action_name = 'action_' . $action_name; 
        $model_file = mb_strtolower($model_name) . '.php'; 
        $model_path = "app/models/" . $model_file; 
        if (file_exists($model_path)) {
            include "app/models/" . $model_file;
        }
        $controller_file = mb_strtolower($controller_name) . ".php"; 
        $controller_path = "app/controller/" . $controller_file; 
        if (file_exists($controller_path)) { 
            include "app/controller/" . $controller_file;
        } else { 
            Route::ErrorPage404();
        }
        if (!class_exists($controller_name)) { 
            Route::ErrorPage404();
        } else { 
            $controller = new $controller_name;
            $action = $action_name;
            if (method_exists($controller, $action)) {
                if ($controller_name != 'Controller_auth') {
                    if ($controller->check_login_status()) {
                        if ($params) {
                            $controller->$action($params);
                        } else {
                            $controller->$action();
                        }
                    }

                } else {
                    if ($params) {
                        $controller->$action($params);
                    } else {
                        $controller->$action();
                    }
                }

            } else {
                Route::ErrorPage404();
            }
        }


    }   

    function ErrorPage404()
    {
        $host = 'http://' . $_SERVER['HTTP_HOST'] . '/super_crm/';
        header('HTTP/1.1 404 Not Found');
        header("Status: 404 Not Found");
        header('Location:' . $host . '404'); #редирект на контроллер 404
    }

    function AuthPage()
    {
        $host = 'http://' . $_SERVER['HTTP_HOST'] . '/super_crm/main';
        header('HTTP/1.1 404 Not Found');
        header("Status: 404 Not Found");
        header('Location:' . $host); 
    }

}

Обработка и результат выводятся в приложении контроллера / controller / controller_join.php:

function action_test() { 
        $ajax_test = $this->model->ajax_test();
        $ajax_json = json_encode($ajax_test, JSON_UNESCAPED_UNICODE);
        //header('Content-Type: application/json; charset=UTF8');
        return ($ajax_json);
}

Также попытался вывести это так:

function action_test() { 
        $ajax_test = $this->model->ajax_test();

        $this->view->generate('join/_search_result.php', 'join/_search_result.php',
                                array(
                                        'title' => 'Заявки на подключения!',
                                        'objects' => $ajax_test
                                     )
                              );
    }   

в результате, когда вы переходите непосредственно на страницу, соединение / тестирование выдает правильный json (приведение в json выполняется в виде)

Сам AJAX должен быть отправлен в этом запросе, и суть вопроса в том, как правильно указать адрес, на который будет отправлен запрос (если вы укажете / join / test (получите ошибку 404), я ожидаю, что он необходимо исправить .htaccess, чтобы можно было направлять в файл запросы на отправку мой index.php, пока мы слабо знакомы с этим, я хочу понять, если есть более простые решения, буду очень признателен.

Сам Jquery:

$(document).ready(function() {
    $('#main_table').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "join/test"
    } );
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...