Обнаружение AJAX-запроса в контроллере OpenCart

Обнаружение AJAX-запроса в контроллере OpenCart

03.04.2019 08:32:59 Просмотров 41 Источник

Я работаю над некоторыми контроллерами в OpenCart 3, и я хочу, чтобы одна из функций контроллера была доступна только через AJAX-запрос. Я пытался использовать переменную $_SERVER['HTTP_X_REQUESTED_WITH'], но OC говорит, что переменная не определена.

с уважением

pcosta94

У вопроса есть решение - Посмотреть?

Ответы - Обнаружение AJAX-запроса в контроллере OpenCart / Detect AJAX request in OpenCart Controller

Является ответом!
Dmitriy Zhuk

04.04.2019 04:22:12

на самом деле OpenCart не удаляет $_SERVER vars. Он просто передает их на сервер $this ->. Проблема в том, что "HTTP_X_REQUESTED_WITH" устанавливается только в том случае, если был вызов AJAX. В противном случае он выдаст ошибку.

вы можете проверить, были ли какие-либо ваши запросы сделаны через AJAX, добавив этот код в файловую system/library/request.phpна line 32

после $this->server = $this->clean($_SERVER); добавить:

if(isset($this->server['HTTP_X_REQUESTED_WITH'])){
    echo '<script>console.log(' . json_encode($this->server['HTTP_X_REQUESTED_WITH']) .')</script>';
}

затем откройте ваш OpenCart frontend и посетите любую страницу продукта, и вы должны увидеть в консоли браузера XMLHttpRequest

вот так http://joxi.ru/MAjo6vWTjZZjBr

это происходит потому, что на странице продукта отзывы загружаются через AJAX. На главной странице нет вызовов AJAX, поэтому вы не должны ничего видеть в консоли.

Надеюсь, это поможет.

Закрыть X