Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2013, 11:45   #1
Midelll
 
Регистрация: 01.02.2013
Сообщений: 3
По умолчанию Применить AJAX в MVC-структуре

Здравствуйте!
Сайт сделан по MVC структуре, обращаться нужно строго в определенном формата (/contr/method/ - как-то так), иначе же выдает ошибку. Причем, почему-то еще часто выдает 404 ошибку, если даже правильно обратиться к существующему контроллеру и методу.

Я просто плохо в этом разбираюсь...

В общем, я делаю запрос посредством AJAX, вначале делал не по формату (писал test.php). Потом делал так: /test/, в первом случае была ошибка "Недопустимый адрес страницы", во втором ошибка 404.

Я создал даже этот метод в уже существующем контроллере, например контроллере index, обращаюсь к нему - все-равно 404 выдает.

Хотя перед тем как добраться до этого метода, он проходит через index.php, подгружает шаблон полностью и т.д. А мне этого не нужно.

В общем, нужно из шаблона посредством AJAX вызвать файл/метод - что угодно, чтобы ему обратно вернулось какое-то значение, и все. Даже просто сделать
echo 123;

Как это обычно делается в MVC структуре?
Я понимаю, что везде по-разному, но все-таки должны существовать распространенные методы решения данной проблемы.

Спасибо!
Midelll вне форума Ответить с цитированием
Старый 01.02.2013, 12:25   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

test.php - но с обязательным указанием правильного пути от точки вызова и будет счастье
ADSoft на форуме Ответить с цитированием
Старый 01.02.2013, 12:39   #3
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Привет,

Скорее всего определены конкретные роуты, запросы, которые обрабатываются неким обработчиком запросов. Твоего нового роута нету в этом списке, поетому кидает ошибку 404.

Ajax же обрабатывается таким способом:
В контроллере проверяем "на ajax" запрос.
Если true прекращаем работу и возврвращаем json или просто выводим что либо через echo.
PHP код:
   .......

    private function 
isAjaxRequest() {
        return (!empty(
$_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
    }

    public function 
index() {
        if (
$this->isAjaxRequest()) 
            die(
json_encode(array('data')));
    }

    ...... 
buriat вне форума Ответить с цитированием
Старый 01.02.2013, 18:07   #4
Midelll
 
Регистрация: 01.02.2013
Сообщений: 3
По умолчанию

Смотри, у контроллерах уже есть файл ajax.php.

Там нет метода index, поэтому я добавил твои строки когда туда.
Пытаюсь вызвать вот так: test.ru/ajax/index/
И выдает 404 ошибку.

Даже если вызывать уже существующие там до меня методы, например так:
test.ru/ajax/getparam/ - тоже выдает 404 ошибку.

Я не знаю как они его применяют, но открыть на сайте страницу с этим контроллером не удается.
Если создать свой новый контроллер ajax2 какой-нибудь, то выходит та же ситуация.

Не знаю что дальше делать) 404 эта выводится думаю еще на index.php или на каком-нибудь системном классе.
Midelll вне форума Ответить с цитированием
Старый 01.02.2013, 19:22   #5
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

.htaccess файл есть? что в нем?
buriat вне форума Ответить с цитированием
Старый 02.02.2013, 12:30   #6
Midelll
 
Регистрация: 01.02.2013
Сообщений: 3
По умолчанию

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>

php_flag display_startup_errors on

# disable display of all other errors
php_flag display_errors on


RewriteEngine on

RewriteCond $1 ^manage
RewriteRule ^(.*)$ /root.php/$1 [L]

RewriteCond $1 !^(root\.php|index\.php|plupload|ic o|images|speller|css|js|robots\.txt |ckeditor|ckfinder|crypt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Midelll вне форума Ответить с цитированием
Старый 02.02.2013, 16:21   #7
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

htaccess вроде норм.

Цитата:
Сообщение от Midelll Посмотреть сообщение
Даже если вызывать уже существующие там до меня методы, например так:
test.ru/ajax/getparam/ - тоже выдает 404 ошибку.

Я не знаю как они его применяют, но открыть на сайте страницу с этим контроллером не удается.
Возможно контроллер настроен так, что бы отдавать страницу только через ajax запрос.
Надо покопаться в файлах, если это классический mvc то будут файлы типа request.php, router.php, может какой-то абстрактный контроллер. Там смотреть.
Начинай смотреть с index.php и лезь в глубь...
buriat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как применить функцию Predator199 PHP 6 05.08.2012 23:58
ASP.NET (MVC 3) и jquery.ajax stalsoft ASP.NET 1 19.01.2012 16:25
Подпрограммы! как применить? gylayko Помощь студентам 6 31.10.2011 18:03
Какую формулу применить? rusgaz Microsoft Office Excel 3 18.10.2010 23:43
Не получается применить DecodeDate sergey113 Помощь студентам 2 27.03.2009 23:12