【发布时间】:2020-02-05 21:59:58
【问题描述】:
我正在使用 Node/Express 构建一个简单的食谱应用程序。用户获得一个“新配方”HTML 表单,他们可以在其中单击“添加成分”按钮并根据需要向表单中添加任意数量的成分。使用 jQuery,每次单击加号图标时,都会为新成分生成一个新的文本输入:
var newIngredient = $('#newIngredient').val();
ingredientCount++;
//give each ingredient a unique name based on count
var ingredientID = "ingredient_" + ingredientCount
// reset input to blank
$("#newIngredient").val("");
// add ingredient to list for user to see or edit.
$("#ingredientsList").append(
'<input class="form-control" type="text" required
name=' + ingredientID + ' value="' + newIngredient + '">')
添加的每种成分都通过计数器分配一个唯一的名称。这一切都很好,提交表单时我得到:
{
name: 'Soup',
ingredient_1: 'carrots',
ingredient_2: 'salt',
ingredient_3: 'turnips',
method: 'Throw all these ingredients together and voila, you have a terrible soup.'
}
在后端,我想获取这些成分中的每一种并将它们添加到“成分”数组中(因为我认为我不能从 HTML 表单中发送一组成分)。我显然不想硬编码ingredients.push(req.body.ingredient_1)、ingredients.push(req.body.ingredient_2) 等...因为每个食谱的成分数量会有所不同。
有没有办法增加变量名?这可能说明了我正在尝试做的事情,尽管我知道它显然不起作用:
ingredientsList=[];
var counter=1;
while(req.body.**"ingredient_"+counter**){
ingredientsList.push(req.body.**'ingredient_'+counter**);
counter++
}
欢迎将动态创建的名称:值对从 HTML 表单传递到 JS 后端的替代想法,但我也想知道是否有可能以我上面尝试过的方式动态增加参数 - req.body.parameter[i]
谢谢!
【问题讨论】:
-
好像你在重新发明一个数组
-
我只会将它们全部设为 name='ingredient',然后在后端获取一系列成分。
标签: javascript html node.js express