как различить вызов ajax и запрос браузера в php (или codeigniter)? - PullRequest
5 голосов
/ 04 августа 2011

Есть ли способ разграничить вызов ajax и обычный запрос браузера в php (или, если быть точным, codeigniter?)Метод индекса контроллера клиента в codeigniter:

public function index() {
    //if (call == 'ajax request') 
    //  do this if it's an ajax request;
    //else
    //  do that if user directly type the link in the address bar;
    $this->load->view('customer/listview');
}

любая помощь будет оценена.спасибо.

Ответы [ 5 ]

5 голосов
/ 04 августа 2011

CodeIgniter way ..

$this->input->is_ajax_request()
3 голосов
/ 04 августа 2011
function getIsAjaxRequest()
{
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
}

Определите эту функцию где-нибудь, затем, конечно, используйте ее следующим образом:

if (getIsAjaxRequest())
// do this
else
// do that

Но может быть такая вещь уже реализована в CodeIgniter, просто глобальный поиск HTTP_X_REQUESTED_WITH

1 голос
/ 04 августа 2011
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {}

Должен делать то, что вам нужно.Хотя он, очевидно, может быть подделан как любой другой заголовок HTTP, так что не полагайтесь на него в каких-либо важных случаях

0 голосов
/ 04 августа 2011

Вместо того, чтобы полагаться на переменные сервера, которые могут быть изменены, например. если сервер находится за обратным прокси-сервером, я выполняю все свои вызовы AJAX через одну функцию javascript, в которую я добавляю переменную POST: isajax. Затем я проверяю это, используя что-то вроде $ this-> UI-> IsAJAX (), которое ищет переменную, которая была инициализирована при настройке контроллера.

$this->_isAJAX = (empty($_POST['isajax']) ? true : false.
0 голосов
/ 04 августа 2011

Это реализация этой функциональности Codeigniter.

if($this->input->isAjax()) {

        }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...