isValidRequest()) { $this->ajaxProcess(); } $this->returnAjaxResponse(); } /** Abstract method to be defined for handling AJAX requests. */ abstract protected function ajaxProcess(); /** * Build and return AJAX response. */ private function returnAjaxResponse() { header('Content-Type: application/json'); return die(json_encode(array( 'success' => (bool) !$this->errors, 'data' => $this->returnData, 'errors' => $this->errors ))); } /** * Validate incoming AJAX request. * * @return bool */ protected function isValidRequest() { Tools::safePostVars(); if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $this->errors[] = 'Invalid request method, must be a POST request.'; } if (!$this->ajax) { $this->errors[] = 'Invalid request, expecting ajax request.'; } return (bool) !$this->errors; } }