#node.js #ejs
Вопрос:
lt;!DOCTYPE htmlgt; lt;html lang="en"gt; lt;headgt; lt;meta charset="UTF-8"gt; lt;meta http-equiv="X-UA-Compatible" content="IE=edge"gt; lt;meta name="viewport" content="width=device-width, initial-scale=1.0"gt; lt;titlegt;Documentlt;/titlegt; lt;/headgt; lt;bodygt; lt;scriptgt; var ajax_get_api_data = [1,2,3] lt;% var dataArray = ajax_get_api_data %gt; lt;/scriptgt; lt;% dataArray.map((data) =gt; {%gt; lt;divgt;lt;%=data%gt;lt;/divgt; lt;%}) %gt; lt;/bodygt; lt;/htmlgt;
Мой вопрос касается отправки данных скрипта в тег EJS
Я надеюсь получить данные, вызвав ajax get api на tage скрипта, а затем я надеюсь отправить данные ajaxCalling в EJS.
Я пытался, как и выше, но только потерпел неудачу.
Как я могу это исправить .
Я знаю, что это исправится просто путем
lt;% var ajax_get_api_data = [1,2,3] %gt;
но это не то, чего я хочу. потому что ajax_get_api_data-это тег сценария, а не тег ejs
Как я могу передать данные сценария в EJS
Ответ №1:
похоже, вы ошибаетесь в том, как работает ejs.
javascript внутри lt;% %gt; запускается при отображении страницы, часть внутри тегов скрипта выполняется на стороне клиента
так что а
lt;scriptgt; var ajax_get_api_data = [1,2,3] // client side lt;% var dataArray = ajax_get_api_data %gt; // undefined during rendering lt;/scriptgt;
вместо этого вы хотите
lt;scriptgt; var ajax_get_api_data = JSON.parse('lt;%- JSON.stringify(dataArray) %gt;') lt;/scriptgt;
объяснение : вы передаете данные с сервера в виде строки (используя JSON.stringify) клиенту и используете синтаксический анализ JSON, чтобы преобразовать их обратно в массив