Символы появились из-за русских букв в значениях. Проблемы нет.
Для проверки попробуйте раскодировать обратно или в js или где вы обращаетесь - проверить.
На первый взгляд что-то типа такогоlet maxIndex = num? num : data.length;
и оставить один цикл. for (let i = 0; i < maxIndex; i++) {
Т.е. вы определяете до какого индекса итерироваться - либо до num, либо по всему массиву.
Кстати, что будет, если указать num больше, чем всего элементов в массиве?
Nulltiton, в postman адрес должен быть такой же, как и в вашем приложении. Насчёт того, где он задаётся - не подскажу точно. Можно прямо в адресе, куда запрос слать, можно добавить переменную и уже её использовать при запросе. Возможно, есть ещё какие-то другие способы.
Так вы бы рассказали, что код должен делать. А так, пока в глаза бросается лишняя строчка $('.cart-i').hover(function(){ - типа вы в обработчике ховера назначаете ещё один обработчик, хотя, скорее всего, вам просто класс надо назначить.
Anna1377, json файлы можно подгрузить точно так же, как сделать обращение к API на сервере (тот же fetch). В результате у вас будет какая-то функция, в которую попадёт этот json-файл.
Далее два подхода - 1 перебрать все ключи из файла и заменить содержимое html-тега на перевод или 2 - найти все элементы с атрибутом data-lang и по значению атрибута - получить перевод из json и заменить.
Перебрать ключи можно через Object.keys(json) - выдаст массив ключей, можно перебрать. Object.entries(json) - выдаст массив (кортежей вроде, зовётся) массивов из двух элементов, в одном будет ключ, в другой - значение.
Найти все элементы с атрибутом - document.QueySelectorAll
Заменить содержимое тега - el.innerHTML. У вас, вроде, нет вложенных тегов в элементах, где нужен перевод.
Это в самых общих чертах направление. Если какие-то вопросы по реализации будут - задавайте.
Насколько я помню, document.getElementById возвращает один элемент. А вы там потом через forEach пытаетесь перебрать. Если не выдаёт ошибку о том, что метода forEach нет, то скорее всего перебирает фиг знает что.
Проще или console.log() натыкать, чтобы понять, что у вас там происходит или банально дебагером пройтись. Добавьте вызов debugger; перед forms.forEach( и откройте инструменты разработчика. При сабмите формы у вас отладчик остановится на строчке с debugger - а дальше уже пошагово проверите, что и где у вас.
И где файл с ошибкой? сюда под спойлер с подстветкой синтаксиса приложите или ссылку на gist/pastebin.
Текст ошибки слишком общий, чтобы по нему вам можно было быстро помочь.
df12, пардон. В хроме действительно заголовки не показываются. Тогда вам надо отправить запрос через какой-нибудь postman или если есть curl - через него.
Но в общем случае, у вас, видимо, конфигурация nginx некорректная, раз браузер не видит этих заголовков в ответе сервера.
А в тексте ошибки говорится, что нет заголовков на preflight запрос. Посмотрите в devtool во вкладке network - там будет запрос и увидите, какие реально заголовки отдают. От этого и пляшите.
Илья Бугаец, ну банально переменные окружения могут быть разные, когда руками запускаете и из-под php.
Там нет ошибок
Вы проверили, что их там нет или вы думаете, что их там нет?
Сделайте перенаправление всего вывода скрипта в файл тогда, что-ли, если через php не хотите отлавливать script.py > allout.txt 2>&1
Для проверки попробуйте раскодировать обратно или в js или где вы обращаетесь - проверить.