-
Публікації
21 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем Panda58dev
-
-
Хм, похоже у меня какие то проблемы с dataType. Сейчас везде поставил json но в url почему то там где должно быть содержимое файл стоит [object%20Object]
Вообще сейчас я путаюсь, что куда мне нужно кодировать json в base64 или наоборот. В результате мне нужен json массив в файле... -
@Blast угу, то есть, я генерирую ссылку для скачивания и записываю всю строку в url? Сделал почти так же как в Вашем примере, но выполняется .error хотя код ответа 200, разумеется подумал на ошибки PHP, но в журнале ошибок нет, error_get_last() тоже возвращает пустоту. Странное дело.
Контроллер:public function getTplFile(){ if (isset($this->request->post['tpl_name'])) { $this->load->model('user/users_perm_plus'); // $data = $this->model_user_users_perm_plus->getTplPermData($this->request->post['tpl_name']); // (array) $data // $data['tpl_name'] = $this->request->post['tpl_name']; $data = 'test'; $file_name = 'upp_tpl_' . $this->request->post['tpl_name'] . '.json'; $file_data = 'data:text/plain;base64,' . base64_encode($data); $json['file_name'] = $file_name; $json['file_data'] = $file_data; $this->response->addHeader('Content-Type: text/plain'); $this->response->addHeader('Content-Disposition: attachment; filename="' . $file_name . '"'); $this->response->setOutput(json_encode($json)); // $error = error_get_last(); // $this->response->setOutput($error); } }
AJAX:
function getTplFile(tpl_name) { $.ajax({ url: '<?php echo $link_to_getTplFile; ?>&token=<?php echo $token; ?>', method: 'POST', dataType: 'text/plain', data: { tpl_name: tpl_name }, beforeSend: function () { $('.panel-title').html('<i class="fa-green fa fa-spinner fa-pulse fa-3x fa-fw"></i><?php echo $text_loading; ?>'); }, complete: function () { $('.panel-title').html('<i class="fa fa-table"></i>'); }, success: function(json) { console.log(json); $('#tpl-file-link').attr('href', json['file_data']).attr('download', json['file_name']); document.getElementById("tpl-file-link").click(); }, error: function (error) { console.log(error); } }); }
Ответ сервера:
-
06.03.2022 в 19:00, spectre сказал:
да на контроллер какой-то, типа common/download
Вообще не понял. У меня есть уже контроллер, который отдаёт файл. AJAX-ом он не обрабатывается...
ocStore 2.3.0.2.4 если что...
-
06.03.2022 в 18:59, spectre сказал:
тогда не аякс
А как отправлять запрос?
-
06.03.2022 в 18:52, stickpro сказал:
через ajax нельзя качать файл, но можно сделать скрытую ссылку и вызвать ее триггер вот пример для axios на ajax перепишите сами
опять же - Вы предлагаете хранить файл на сервере.
-
06.03.2022 в 18:50, spectre сказал:
аяксом надо формировать ссылку на файл и открывать его в новой вкладке
Да нет, суть заключается в том, что бы файл создавался "на лету" и не хранился на сервере.
-
Здравствуйте! Есть задача - нужно, что бы на сервере формировался файл, который мог бы скачать пользователь, этим занимается отдельный метод в контроллере, который вызывается посредством AJAX запроса. На "Хабр Q&A" решение подобной задачи уже есть. Проблема заключается в том, что оно по какой то причине не работает - все заголовки отправляются, на фронт всё приходит, но вот файл никакой не качается. Скрины с ответом сервера и кодом прилагаю.
Пробовал ответ сервера делать через "echo" - результат точно такой же.
-
Капец, зачем такой балаган разводить, если ТС уже справился?))
-
7 минут назад, StrikerXP сказал:
По какой то причине ни один из способов не работает
Мой способ может не работать, просто потому что у Вас не дефолтный шаблон, или шаблон, который не поддерживает bootstrap. Ну или просто не туда вставили строку
можно Ваш product.tpl?
- 1
-
В 04.02.2022 в 22:23, Tom сказал:
Редактировать файл product.tpl используемого шаблона.
Может костыль но на дефолтной локалке (ocStore v2.3.0.2.4), вроде работает:
\catalog\view\theme\default\template\product\product.tpl строка 135<li><?php echo $text_stock; ?> <?php echo ($stock == 0)? '<span class="label label-danger">' . $stock . '</span>' : '<span class="label label-success">' . $stock . '</span>'; ?></li>
- 1
-
7 минут назад, romveld сказал:
Эта библиотека позволяет привязаться к конкретному разрешению в пикселях, или только к типам устройств?
Она "привязывается" к типам устройств, и имеет множество методов анализа юзер-агента: ссылка.
- 1
-
@ocdev_pro помог и всё разъяснил, с AJAX проблем не было, просто я обращался к методу модели, которого не было. Всем спасибо!
- 1
-
1 минуту назад, Shureg сказал:
У вас файл точно лежит в директории /admin/controller/controller/
Точно, основной шаблон и метод index загружаются
-
2 минуты назад, Shureg сказал:
Если ваш реальный код другой, копируйте его, а не загадывайте ребусы.
Окей, с запросом разобрался, оказывается проблема и правда была в url: контроллер, метод index(), в нём подключаю js файл и передаю в шаблон url:
$this->document->addScript('view/javascript/users_perm_plus/users_perm_plus.js'); $data['getPerms'] = $this->url->link('user/user_permission/getPerms', 'token=' . $this->session->data['token'] . $url, true);
Тут-то и вся проблема - указал не тот контроллер )
Но теперь другая проблема есть: кидает вот такую ошибку: -
1 минуту назад, Shureg сказал:
Неужели вас в гугле забанили?
Слава богу - нет
В приложенном коде видно, что запрос отправляет функция getPerms() которая принимает один единственный параметр - url адрес. Адрес по которому отправляется запрос я тоже описал: .../admin/index.php?route=controller/file/method&token=...
Если у Вас есть ещё предположения, сильно прошу их высказать!- 1
-
9 минут назад, Shureg сказал:
Посмотрите хотя бы базовые способы jquery ajax-запросов. Вы его отправляете пустой в никуда.
Ну допустим я к запросу добавляю data: 'test', но от этого ничего не меняется. Что конкретно не так с запросом? Как сделать что бы он отправлялся "в куда"?
-
ocStore v2.3.0.2.4
Товарищи, приветствую! Пишу модуль в админке, имею контроллер, который загружает основной шаблон. Этот шаблон использую JQ и AJAX обращается к серверу, ожидая, что тот выполнит метод, описанный в контроллере. Этот метод, в свою очередь, выполняет некоторые манипуляции с данными, потом передаёт их второму шаблону (tpl) и тот уже должен выводиться:
public function method() { if ($this->request->server['REQUEST_METHOD'] == 'POST') { //code... $this->response->addHeader('Content-Type: html'); $this->response->setOutput($this->load->view('controller/template', $data)); } }
AJAX запрос отправляется, и возвращается ответ с кодом 200, в виде html "Страница не найдена". В итоге AJAX стучится в .../admin/index.php?route=controller/file/method&token=... но когда я перехожу по этому адресу, так же вижу сообщение "Страница не найдена". Запрос такой:
function getPerms(url) { $.ajax({ url: url, method: 'POST', dataType: 'html', brforeSend: function(){ $('.panel-title>i').replaceWith('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i>'); }, complete: function(){ $('.panel-title>i').replaceWith('<i class="fa fa-table" aria-hidden="true"></i>'); console.log('complete'); console.log(url); }, success: function(data){ $('#upp-table').html(data); console.log(data); }, error: function(){ console.log('error'); } }); }
Как правильно обратиться к методу, что бы получить его ответ (готовый шаблон)?
-
Установил ocStore последней версии на сервер (debian 10) с версией php 7.3.27. Всем файлам дал владельца и группу "www-data":
Установка прошла успешно, БД подцепилась и даже сайт отображается нормально, но к сожалению войти в админку у меня просто не получается! Чистил куки, менял браузер, переустанавливал cms, и всё бестолку - зловещая надпись Неправильная токен-сессия. Авторизуйтесь снова. продолжала маячить:
Если посмотреть в вкладку "network" в devtools то выведет следующее:
-
Благодарю
-
Здравствуйте! Я начинающий пользователь Open Cart, недавно знакомый посоветовал углубиться в эту cms, так же посоветовал использовать версии 2.x. Я заинтересовался, поставил ocStore, и начал в нём копаться. Разумеется на тот момент я уже знал о существовании модулей, так же как и на других. Собственно мой вопрос заключается в том, как эти модули создавать? в интернете нашёл только этот перевод, но хотелось бы увидеть ещё подобные, что бы было с чем сравнивать. Прошу посоветовать пару статеек/мануалов по созданию модулей и использованию API open cart-a.
Ответ сервера - файл для скачивания.
в Допомога програмістам та розробникам
Опубліковано:
Всё, разобрался, нужно было немного с кодировками поколдовать и правильно url сформировать. Всех благодарю, особенно @Blast ! Удачного дня