как отправить данные тегов ejs в javascript?

#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, чтобы преобразовать их обратно в массив