Во-первых, я сейчас использую для проекта express.js и ejs.
Проще говоря, я создаю небольшую функцию, с помощью которой пользователь может добавить новую категорию в блог. По сути, пользователь видит выбор параметров, и если он хочет создать новый, он может. Пользователь нажимает «кнопку добавления новой категории», после чего появляется форма, которая добавляется в коллекцию категорий в базе данных (mongoDB). Когда форма отправлена и домашняя страница перенаправлена, я хочу, чтобы я мог видеть варианты выбора с недавно добавленной.
Но когда новые «входные данные» будут добавлены в базу данных, как внешний интерфейс javaScript сможет найти новые данные и создать элемент option на лету?
<form class="ui form" action="/blogs" method="POST">
<div class="field">
<label for="">Category</label>
<div class="select-category">
<select class="select js-select" name="blog[category]">
<option value="<%= category[0].name %>"> <%= category[0].name %> </option>
<option value="<%= category[1].name %>"><%= category[1].name %></option>
<option value="<%= category[2].name %>"><%= category[2].name %></option>
</select>
<div class="addCategory js-addCategory"> + </div>
</div>
</div>
</form>
<div class="form-modal js-form-modal">
<form class="ui form js-form" action="/blogs/addNewCategory" method="POST">
<div class="close-icon js-close-icon"> x </div>
<div class="field">
<label for="">Name</label>
<input class="js-new-category" type="text" name="newCategory" placeholder="new category">
</div>
<button class="ui primary basic button" type="submit">Add</button>
</form>
</div>
app.post('/blogs/addNewCategory', function(req, res){
let newCategory = req.body.newCategory
Category.create({
name: newCategory
}, function(err, newCategory){
if(err){
res.render('new')
} else {
res.redirect('/blogs/new')
}
})
})
Я просто хочу иметь возможность сделать что-то подобное в моем веб-интерфейсе (я знаю, что этот код не будет работать, форма никогда не отправляется и даже не использует данные избазы данных), как при нажатии кнопки «Отправить», и новые данные добавляются в базу данных, и пользователь видит только что созданный элемент параметра.
newCategoryForm.addEventListener('submit', addNewCategory)
function addNewCategory(e){
// e.preventDefault()
let value = newCategoryInputEl.value
let newOption = document.createElement('option')
let newOptionValue = document.createTextNode(value)
newOption.appendChild(newOptionValue)
selectEl.appendChild(newOption)
}
Я знаю, что определенно есть способ сделать это, потому что я вижу эту функцию постояннокак в Youtube добавление нового плейлиста также в Spotify и т. д.