Возникла проблема с доступом к скрытому значению массива полей - PullRequest
0 голосов
/ 21 сентября 2019

У меня проблема с доступом к скрытому значению поля в Node JS.Я пытаюсь передать массив как скрытое значение поля при отправке формы в ejs, а затем я пытаюсь получить доступ к этому массиву в методе POST NodeJS, который вызывается при отправке формы.

это мой массив'itm_mdf' выглядит так:

[{"name": "COKE ZERO", "id": "1048647"}].

Я передаю массив как скрытое значение поля, как показано ниже

<form class="ui form" action="/items" method="POST">
<input type="hidden" name="modifiers" value=<%=JSON.stringify(itm_mdf)%>  
<button class="btn btn-primary" type="submit">REORDER</button>
</form>

И я обращаюсь к массиву в методе Post Node JS, как

app.post("/items",function(req,res){
console.log('itm_mdf *******'+req.body.modifiers);
}

Но я вижу, что значение массива печатается в методе Post, как показано ниже

itm_mdf ******* [{"name": "COKE

, и когда я делаю JSON.parse (req.body.modifiers) в методе Post, я получаю ошибку как SyntaxError: Неожиданный конец JSONinput.

Не могли бы вы дать мне знать, что я делаю здесь неправильно и что мне нужно сделать, чтобы это исправить.

1 Ответ

1 голос
/ 21 сентября 2019

Значение не заключено в кавычки:

<input type="hidden" name="modifiers" value=<%=JSON.stringify(itm_mdf)%>

Таким образом, оно должно отображаться следующим образом:

<input type="hidden" name="modifiers" value=[{"name":"COKE ZERO","id":"1048647"}]>

И это делает value='[{"name":"COKE '

Вам необходимозаключите его в кавычки, но поскольку JSON использует двойные кавычки, вы должны использовать одинарные кавычки и надеяться, что в ваших данных нет одинарных кавычек:

<input type="hidden" name="modifiers" value='<%=JSON.stringify(itm_mdf)%'>

Оптимальное решение - убедиться, что вы закодировали значениечтобы у вас не было кавычек в отображаемых данных.

...