在 OpenCart 控制器中检测 AJAX 请求

Detect AJAX request in OpenCart Controller

我正在 OpenCart 3 中的一些控制器上工作,我希望其中一个控制器功能只能通过 AJAX 请求访问。 我尝试使用 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量,但 OC 说该变量未定义。

此致

pcosta94

实际上 OpenCart 不会删除 $_SERVER 变量。它只是将它们传递给 $this->server。问题是 'HTTP_X_REQUESTED_WITH' 仅在有 AJAX 调用时设置。否则会报错。

您可以通过将此代码添加到 line 32

上的文件 system/library/request.php 来测试您的任何请求是否已通过 AJAX 发出

$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 前端并访问任何产品页面,您应该会在浏览器控制台中看到 XMLHttpRequest

像这样 http://joxi.ru/MAjo6vWTjZZjBr

this is because on the product page the reviews are loaded via AJAX. On homepage there are no AJAX calls, so you shouldn't see anything in the console.

希望对您有所帮助。