Как адекватно работать с MySQL через JS? Я имею в виду, как получать данные из базы в JS и обратно (без Node.js)? Совсем запутался нахуй, помогите устаканить в голове.Есть данные в БД, как до них достучаться и, скажем, засунуть их в квиз? Квиз написан на JS, и я хочу при вводе данных в поля в WordPress передавать вопросы в вопросник JS. Я сделал так - непосредственно на странице сайта, которую я натягиваю на WP, объявил переменную в JS и засунул в нее переменную php, которая содержит массив данных полей. Получилась строка. Строку я превратил в массив и далее вычленил элементы уже в вопросник. Но сука, я чувствую, что так не должно быть. То, как я это сделал, это блять неправильно и вообще неадекватно. Думаю что есть вариант через fetch, но как через него достучаться до БД?Подскажите плз нормальный человеческий способ, как в реальной практике происходит взаимодействие JS с базой данных (скажем, на WP).
>>2132160Давай разобьем вопрос на несколько частей: 1) как передать в JS начальные данные при загрузке страницы. Тут правильным способом будет получить эти данные в PHP при загрузке страницы, преобразовать их в JSON и явно передать в нужную функцию: <script>initQuiz(<?= json_encode($data); ?>);</script>Плюс такого подхода в том, что нам не надо делать лишние аякс-запросы и мучать пользователя ожиданием - данные уже встроены в страницу и мгновенно могут быть использованы скриптом. Также этот подход очень явный - если ты наткнулся на этот код, ты можешь в IDE в один клик перейти к функции initQuiz() и увидеть, что дальше делается с данными.Минус тут может быть только в том случае, если данных очень много, и они почти никогда не используются. В этой ситуации ты заставляешь пользователя грузить не нужные ему данные.Иногда этот подход не подходит, так как у нас скрипт загружается асинхронно и функцию initQuiz мы вызвать не можем (так как скрипт еще не загрузился). В таком случае мы можем создать внутри страницы "остров" с JSON-данными. Скрипт при загрузке находит в теле страницы этот остров и берет данные из него:<script id="quizData" type="application/json"><?= json_encode($data); ?></script>Обрати внимание на атрибут type: он говорит, что это не яваскрипт, а JSON и браузер не будет пытаться его выполнить.Этот подход, на мой взгляд, менее явный, так как при просмотре кода неочевидно, для кого предназначен этот остров и как найти скрипт, который его использует, если у тебя тысячи скриптов. IDE тут не поможет.2) Как в процессе работы скрипта получать или отправлять данные без перезагрузки страницы? Тут нужны аякс-запросы. Ты отправляешь запрос на сервер, а там PHP-скрипт его обрабатывает как нужно. Логично отправлять данные на сервер как данные формы, а принимать с сервера ответ в формате JSON.То есть, тебе нужно иметь скрипт на сервере, который положит или достанет данные из БД. Помни про безопасность: хакер может прислать твоему скрипту что угодно. Не доверяй приходящим данным, а тщательно проверяй каждый элемент на соответствие разрешенным значениям.WordPress тут вообще не при чем. Я не думаю, что в нем есть что-то для таких сценариев работы. Это просто движок для блогов, а не универсальный фреймворк.
>>2132239Спасибо. Да, фетчи когда я изучал, то создавал php файл, который как бы выступает мостом между JS и базой данных. По поводу варианта получать данные сначала в PHP и потом их преобразовывать я тоже понял, но не понял только вот чего: что значит "php скрипт на стороне сервера"? Вот у меня есть на локалхосте условный php-файл. А на реальном сервере при переносе он точно так же и хранится? То есть мне нужен тупо php-файл обработчик?
>>2132968Тебе в любом случае нужен код на стороне сервера. Ты не можешь из JS кода из браузера напрямую залезть в базу данных MySQL - и это хорошо, так как иначе любой желающий мог бы в нее залезть.Сервер - это то, откуда браузер скачивает страницу сайта. Если ты поднял вордпресс на локалхосте, то сервер это твой компьютер."Код на стороне сервера" значит php-скрипт или, например, приложение на Node.JS.Я написал, что в MySQL нельзя залезть JS-скриптом из браузера. Но есть базы данных, в которые залезть можно из браузера без использования PHP-кода. Это severless базы данных вроде FireBase. Но она может быть платной, и документация к ней на английском и разобраться в ней может быть непросто.
>>2133643Немного другой вопрос был. Код на стороне сервера - в смысле, это просто php_файл? То есть вот на сервере у меня файлы сайта, и среди них есть файл обработчик.php, который занимается обработкой запросов из JS. Правильно понял?
>>2133997>Код на стороне сервера - в смысле, это просто php_файл?В простейшем случае это может быть 1 пхп файл + сервер, который обрабатывает поступающие запросы и перенаправляет к пхп файлу