2010-12-28 1 views
0

настоящее время я использую это, чтобы проверить, если запрос является Ajax запрос:Kohana 3 Проверьте, если запрос Ajax

if (! Request::$is_ajax || Request::instance() == $this->request) 
{ 
    exit; 
} 

Если я пытаюсь получить доступ к странице непосредственно он будет выходить, но если бы я сделать ajax, он также выйдет. Я также пробовал просто:

if (! Request::$is_ajax) 
{ 
    exit; 
} 

И наоборот, но сценарий все равно выходит каждый раз. Если я удалю чек, ajax будет работать как обычно. Любая идея, что может быть неправильным? Благодарю.

ответ

3
  1. Когда вы используете Ajax, Request::instance() === $this->request ИСТИНА. Используйте это условие для вызовов HMVC.
  2. Kohana отмечает запрос как Ajax, когда $_SERVER['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest' состояние TRUE. Проверьте заголовки ваших клиентов (например, с firebug), может быть ваш JS не отправляет этот заголовок. Или, Возможно, вы используете флеш-загрузчик?
+0

Да, с использованием firebug X-Requested-With был установлен с XMLHttpRequest. Не используя загрузчик Flash, это простое текстовое поле ввода автозаполнения, которое извлекает результаты в JSON. Что еще может быть проблемой? – noluck

+0

Что ж, это странно, я снова пытался это сделать, и теперь он работает, используя if (! Request :: $ is_ajax) {exit; } Может быть, мой браузер каким-то образом кэшировал что-то, не знаю. – noluck

+3

с текущей версией, эта проверка может быть выполнена с помощью 'Request :: current() -> is_ajax()' – eaykin

0

Request::current()->is_ajax() Этот код работает для меня.