我正在尝试向后端发送一个json对象。基本上我要做的是得到两个文本字段的输入,然后是所有选定文本框的列表。我的javascript代码是这样的:
function insertNewHero() {
var selectedAbilities = [];
$('#newhero input:checked').each(function() {
selectedAbilities.push({
"id": $(this).value,
"ability": $(this).textContent
});
});
var superhero = {
"name": document.getElementById("name").value,
"surname": document.getElementById("lastName").value,
"abilities": selectedAbilities
}
$.ajax({
type: "POST",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: "/insertNewHero",
data: JSON.stringify(superhero),
success: function (result) {
// other stuff
}
});
我还不是javascript方面的Maven,但从我在其他答案和帖子中发现的情况来看,这是我可以组合起来的,我认为它确实可以工作。后端部分工作正常,因为我测试它与 Postman 和完美的工作良好。这就是json,i;我是 Postman 寄来的,看起来像:
{
"name": "Wanda",
"surname": "Maximoff",
"abilities": [
{
"id": 4,
"ability": "Telechinesis"
},
{
"id": 3,
"ability": "Flight"
}
]
}
javascript代码中可能有什么错误?
以下是其中一个文本字段和一个复选框的示例:
<div class="form-group">
<label for="lastName">Last Name</label>
<input type="textfield" class="form-control" id="lastName" placeholder="Last Name" required>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" style="background: #bf0000; color: #bf0000; border: solid #bf0000" id="InsertFlight">
<label class="custom-control-label" for="InsertFlight" value="3">Flight</label>
</div>
显然javascript代码没有正确解析复选框的值和id。我如何才能使复选框的html内容,一个json数组格式正确
1条答案
按热度按时间8wigbo561#
主要的问题似乎是从html中提取能力。
为此,遍历所有选中的复选框,然后使用jquery函数,如
.closest()
或者.find()
去抓住<label>
. 从那里你可以提取所需的信息。