在OpenCart控制器中检测AJAX请求

时间:2019-04-03 17:32:59

标签: ajax controller request opencart opencart-3

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

最好的问候

pcosta94

1 个答案:

答案 0 :(得分:1)

实际上,OpenCart不会删除$ _SERVER变量。它只是将它们传递给$ this-> server。问题是只有在进行AJAX调用时才设置“ HTTP_X_REQUESTED_WITH”。否则,将产生错误。

您可以通过将此代码添加到system/library/request.php上的文件line 32来测试是否通过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

  

这是因为在产品页面上,评论是通过AJAX加载的。在主页上没有AJAX调用,因此您在控制台中不应看到任何内容。

我希望这会有所帮助。