Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

kairos

Пользователи
  
  • Публикаций

    53
  • Зарегистрирован

  • Посещение

Все публикации пользователя kairos

  1. Во общем да, оказалось что дело в настройках хостинга, я попробовал получить данные из другого сервера и все работает нормально. На проблемном хостинге помог файл: .htaccess со следующим содержимым: <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> <IfModule mod_headers.c> Header always set Access-Control-Allow-Origin "https://b.com" Header always set Access-Control-Allow-Methods "GET,POST,PATCH,PUT,DELETE,OPTIONS" Header always set Access-Control-Allow-Headers "*" Header always set Access-Control-Allow-Credentials "*" Header set Access-Control-Allow-Credentials true </IfModule> </IfModule> При этом аналогичные запросы из php файла пришлось убрать, итоговый код: PHP: <?php header('content-type: application/json'); echo '{"foo":"bar"}'; file_put_contents(__DIR__ . '/test_GET_data.txt', var_export($_GET, true)); file_put_contents(__DIR__ . '/test_POST_data.txt', var_export($_POST, true)); ?> JS: $(document).ready(function(){ $.ajax({ url: "https://b.com/", crossDomain: true, success: function( response ) { console.log(response); } }); });
  2. В общем следующий код на локальной машине отдает данные нормально: $(document).ready(function(){ $.ajax({ url: "http://b.com", crossDomain: true, success: function( response ) { console.log(response); } }); }); <?php header('content-type: application/json'); header('Access-Control-Allow-Origin: http://a.com'); echo '{"foo":"bar"}'; ?> То есть на локалке достаточно было убрать: dataType: "jsonp", однако на виртуальном хостинге этот код не работает, видимо блокировка идет где то на уровне настроек хостинга, интересно можно ли это решить средствами php или скажем путем добавления файла: .htaccess или тут без обращения в саппорт хостинга не обойтись?
  3. Приветствую форумчане. Такая проблема, пытаюсь выполнить ajax запрос, суть которого отправить некоторые данные с домена: a.com на b.com и соответственно получить ответ от b.com с целью дальнейшей его обработки в скрипте на a.com Оба домена находятся на OpenServer на локальной машине, то есть у меня есть контроль над http://b.com/ и я могу прописать в php файле необходимые настройки. Однако при попытке выполнить ajax запрос получаю ошибку: jquery-3.6.0.min.js:2 Cross-Origin Read Blocking (CORB) blocked cross-origin response http://b.com/?callback=jQuery360001053556176974424_1630579545897&_=1630579545898 with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details. Аналогичную ситуацию имею на хостинге уже на реальных доменах. При этом данные c a.com на b.com в php скрипт все же попадают, однако, мне не удается добиться чтения ответа на домене a.com. Что характерно в сети есть по меньшей мере один домен с которого таки удается получить данные таким способом. Если вместо b.com подставить страницу: https://jsonplaceholder.typicode.com/todos/1 то в этом случае получаю ответ: {userId: 1, id: 1, title: "delectus aut autem", completed: false} Однако же добиться аналогичного эффекта на домене под собственным контролем я не могу. Пробовал в js указывать crossDomain: true, на стороне php пробовал указывать различные заголовки по типу: header('content-type: application/json'); и тому подобное... пробовал даже скопировать из браузера заголовки которые отдает сайт https://jsonplaceholder.typicode.com/todos/1 и подставить их в php файл через тот же header() однако ничего не выходит. Подскажите куда копать? Вопрос вроде плевый, но сколько не пытаюсь ничего не получается. Ниже код js: <script> //Первый вариант на jQuery: $(document).ready(function(){ $.ajax({ url: "http://b.com", crossDomain: true, dataType: "jsonp", success: function( response ) { console.log(response); } }); }); </script> <script> //Второй вариант на чистом js: function receiver(data){ console.log(data); } </script> <script src="http://b.com/?callback=receiver"></script> код php: <?php header('content-type: application/json'); header('Access-Control-Allow-Origin: http://a.com'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); echo '{"foo":"bar"}'; ?>
  4. В общем получается что для такого кода: document.addEventListener('DOMContentLoaded', function() { console.log('test DOMContentLoaded!!!'); document.qerySelector('#section-slideshow > .Slideshow > .Slideshow__Carousel > button.next').addEventListener('click', function (e) { console.log('test click!!!'); console.log(e); }); }); Первое сообщение: "test DOMContentLoaded!!!" - выводится, а при клике не кнопку второе: "test click!!!" - уже нет. Ну то есть событие клика этот код не отслеживает. Но повторюсь мне нужно не отследить событие клика, а именно вызвать его. Задача усложняется тем что эти кнопки: <button class="flickity-prev-next-button-222 previous" type="button" aria-label="previous"><svg viewBox="0 0 100 100"><path d="M 10,50 L 60,100 L 70,90 L 30,50 L 70,10 L 60,0 Z" class="arrow"></path></svg></button> они как бы создаются слайдером, возможно поэтому я не могу вызвать событие клика по ним к примеру тем же методом trigger для jQuery.
  5. Странно, выдает ошибку: (index):1080 Uncaught TypeError: Cannot read property 'addEventListener' of null at (index):1080 (index):1067 Uncaught TypeError: document.qerySelector is not a function at HTMLDocument.<anonymous> ((index):1067) Кроме того как я понимаю это код чтобы отследить событие клика? А мне нужно его вызвать, то есть с имитировать событие как будто пользователь кликнул на кнопку.
  6. Вопрос к знатокам JS. Пытаюсь вызвать событие клика на кнопку. Однако событие не происходит. Решил проверить правильно ли отобрал кнопку на странице для дальнейшей работы с ней В итоге вот такой код: var previousButton = document.querySelector('button.previous'); console.log(previousButton); Выдает в консоль буквально следующее: <button class="flickity-prev-next-button-222 previous" type="button" aria-label="previous"><svg viewBox="0 0 100 100"><path d="M 10,50 L 60,100 L 70,90 L 30,50 L 70,10 L 60,0 Z" class="arrow"></path></svg></button> И я вот тут что-то запутался. Он мне что вернул? Объект или строку с кодом? Если объект то подходит ли он для вызова события клика на него? При этом в документации указанно что метод document.querySelector() - возвращает ссылку на объект типа Element линк: https://developer.mozilla.org/ru/docs/Web/API/Document/querySelector Но почему тогда я вижу в консоли строку с исходным кодом?
  7. Здравствуйте. Я делал данную доработку для Scrin, API там как такового нет, данные парсяться с сайта европочты по крону раз в сутки, после этого на странице оформления заказа готовые данные подтягиваются уже из сайта заказчика. К симпле подключились небольшой модификацией в tpl файлах модуля. Если нужно могу вам сделать аналогичную реализацию. Пишите в ЛС.
  8. Приветствую. Если не найдете исполнителя который возьмется за задачу "целиком" то обращайтесь, могу выполнить интеграцию с внешними сервисами, а также почти все пункты за исключением разве что дизайна. А так советовал бы вам разбить ТЗ на отдельные логические части и искать исполнителя отдельно по каждой из них - быстрее найдете. Ведь тот кто хорошо может сделать дизайн не факт что разбирается в системном администрировании и наоборот.
  9. kairos

    Три крутых истории, про быстрые магазины!

    А точно, не сообразил)) Как говорит один мой друг: "Перекуп на перекупе сидит и перекупом погоняет".
  10. kairos

    Три крутых истории, про быстрые магазины!

    Спасибо. Как всегда очень поучительные кейсы. По второму кейсу интересно как "хайлоад" фирма не заметила что фиды выжирают память? Или их geo API сбил с толку?
  11. Да в 3-йке проблема осталась. Огромное спасибо за решение.
  12. Возможно вы правы, однако задача не состоит в том чтобы запретить поисковику обход страниц, а именно в том чтобы дублирующие страницы не появились в поиске, чтобы они не мешали продвижению основных страниц. Ноуиндекс здесь не совсем подходит так как на сколько я знаю работает он только лишь для Яндекса. Ну и кроме того решение о том каким именно образом закрывать страницы не всегда принимает разработчик, как правило есть заказчик, которому задачи могут ставить seo-шники.
  13. Забавно изначально стоит OCFilter но он как раз эту задачу и не решает, ну тесть не дает никакого признака по которому можно было бы закрыть страницу от индексации. или возможно я не нашел в настройках, но смотрел внимательно. Пока остановил свой выбор на: Там прямо в демке видно что есть признак в url для всех страниц фильтра.
  14. В общем появилась необходимость поставить на сайт такой фильтр товаров, страницы которого точно не попадут в индекс поисковых систем. То есть нужно чтобы хвостовая часть url которая отвечает за выбранные в фильтре опции либо подставлялась через знак # либо же чтобы страницы фильтра можно было промаркировать в url некоторым словом например: /filter/option1/option2/ и так далее. Чтобы в последствии такие ссылки можно было закрыть от индексации в robots.txt при помощи этого признака. Товаров в магазине на данный момент больше 2-х тысяч поэтому нужно чтобы фильтр нормально "тянул" такое количество и не приводил к тормозам магазина. Сейчас смотрю на форуме различные варианты но возможно знающие пользователи сходу смогут подсказать готовое решение.
  15. за centos ничего не могу сказать но вот ubuntu слишком уж глючная. Сам привык к дебиану по той лишь причине что он стабильней убунты и под него проще комманды нагуглить чем под центос. А вообще для серверных дел чем стабильнее ось, чем реже для нее выходят всякие псевдообновления со свистелками и перделками тем по моему мнению лучше, надежней работать будет.
  16. В общем нашел, статус меняется в файле: catalog/model/checkout/order.php если точнее то меняют его вот эти строки: // Update the DB with the new statuses $this->db->query("UPDATE `" . DB_PREFIX . "order` SET order_status_id = '" . (int)$order_status_id . "', date_modified = NOW() WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', date_added = NOW()");
  17. Интересно, а куда в таком случае улетает форма при сохранении заказа в админке? В пути указано: ?route=sale/order/edit значит по идее ее должен контроллер в админке принимать? Каким образом получается что эту форму обрабатывает фронт?
  18. В общем понадобилось совершать определенное действие при изменении статуса заказа, первой мыслю было сделать это в соответствующем методе модели, в файле: admin/model/sale/order.php есть метод getOrder() однако никакого намека на метод edit либо же editOrder в этом файле нет... произвел поиск по слову UPDATE, в итоге единственный UPDATE нашелся в строчке: $this->db->query("UPDATE `" . DB_PREFIX . "order` SET invoice_no = '" . (int)$invoice_no . "', invoice_prefix = '" . $this->db->escape($order_info['invoice_prefix']) . "' WHERE order_id = '" . (int)$order_id . "'"); которая явно не подходит под обновление всего заказа. Короче говоря не пойму, какой именно метод добавляет или обновляет в базу данных информацию о заказе. Думаю ладно поищу нужный метод в контроллере в итоге в файле admin/controller/sale/order.php нашел метод edit() со следующим содержимым: public function edit() { $this->load->language('sale/order'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('sale/order'); $this->getForm(); } Ну то есть никаких тебе $this->request->post и опять же нет вызова модели которая обновляет информацию о заказе. Есть правда вызов метода $this->getForm(); но он достаточно большой и там не очевидно как понять что форма была отправлена на сервер, а не скажем просто загружена при открытии заказа на редактирование. Ну и опять же любопытно какой метод все таки обновляет информацию о заказе в бд.
  19. Если нужно бесплатно то только брать дефолтный шаблон и изменять его под себя. Все же более менее хорошие шаблоны будут платными. У дефолтного шаблона единственный + в том что он совместим по умолчанию со всеми модулями.
  20. Получается чтобы написать модуль для обмена с 1С нужно купить эту программу и установить себе на ПК? Возможно существуют какие то демки для таких целей?
  21. Собственно сабж. Ну типа на сколько я понимаю 1С устанавливается на ПК пользователя, а не на сервере.. или нет? Ну то есть получается из самой 1С-ки данные можно пихать напрямую в базу Opencart или же через какую то прокладку. Но как передать инфу из движка назад в 1С? Ну например информацию о заказах, статистике продаж или что там еще нужно передавать? Для api сервисов это делается путем отправки POST/GET запросов на определенный url. Но куда слать запросы если 1С стоит на компе пользователя? Или я чего то не понимаю и 1С давно в облаках крутится?
  22. Предложенный whiteblue видимо дороговат если покупать только для этой задачи, проще будет сделать индивидуальное решение, отписал вам в ЛС.
  23. В целом задача понятна, написал вам в личку. Если актуально - обращайтесь.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.