Доброе утро, совсем новичок в OC. Проблема заключается в следующем. Как правильно организовать обмен данными между шаблоном и php файлом. Без использования Ajax все работает превосходно и верно, но при использовании скрипта в ответ тишина. Пример class ControllerTestTest extends Controller { public function index() { // if (isset($this->response->post['name'])) { } } } public function exchange () { $name = $this->request->post['name']; } else { $name = ''; } $json = array(); // $this->load->model('extension/module/news'); $json['message'] ="Here we go"; $json['name'] = $name; //$json['message'] = $this->model_extension_module_news->addNews($this->request->post); //$this->log->write($name); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } $('#my_form_email').submit(function (event) { event.preventDefault(); var $form = $(this), formAction = $form.attr('action'), formData = $form.serialize(); //Отпраляем вопрос пользователя $.ajax({ url: 'index.php?route=test/test/exchange', type: 'POST', data: formData, dataType: 'json', success: function (json) { //callback на случай ус } Правильно ли указан url к методу контроллера? И как обработать полученные данные
тогда открывайте инструменты разработчика, вкладка Network (Сеть) и смотрите по фильтру XHR какие запросы уходят на сервер, с какими данными, какой ответ там. в вашем коде нет никакой обработки ответа. может он нормальный и данные приходят, просто вы с ними ничего не делаете
Как говорится, добавлю свои 5 копеек. Строка: $this->response->addHeader('Content-Type: application/json'); Не нужна, хотя и корректно добавлять такой заголовок. Обычной строки $this->response->setOutput(json_encode($json)); более чем достаточно.
Здравствуйте. У меня вопрос, вроде по теме: В модуле доставки есть массив. Как его отправить в браузеный скрипт через Ajax??
Это я уже видел где-то в Яндексе. Но не могу понять, что такое response? И, что такое setOutput? И где они прячутся? Может их у меня нет, тогда где сделать? и Как? Мне кажется, что я уже весь опенкарт носом перепахал, но это прошло мимо.
Ну это в контроллерах опенкарта - стандартный вывод данных. Может вам проще будет кого-то попросить сделать то, что вам нужно, в рамках фриланса?
Решил сохранить массив в сессию, а потом через контроллер забирать. В файле: $_SESSION["myArray"] = json_encode($array); в контроллере public function Json() { $data = $this->session->myArray; echo $data; } Запрашивать буду по ссылке: index.php?route=extension/shipping/myname/Json Буду завтра пробовать. Может уже кто-то знает, где ошибся?
Вместо echo $data; Сделайте $this->response->setOutput($data); Раз у вас уже там json_encode($array); П.С. Подправил мелочи в коде