我正在以Java Bean的形式获取数据,并将每个值插入表中。
首先,以常见方式检索值。
但是我添加了一些Javascript源,以便在单击附近的任何区域时都可以修改该值。
现在,如果修改后有任何更改,我也想将数据保存在数据库中。
我该怎么办?
这是我的HTML代码
<table class="bg-light table table-hover" style="overflow:hidden">
<th>Word</th>
<th>Dialogue</th>
<th>Practice</th>
<c:forEach items="${list}" var="engboardVO">
<tr>
<td data-editable>${engboardVO.word}</td>
<td data-editable>${engboardVO.dialogue}</td>
<td data-editable>${engboardVO.practice}</td>
</tr>
</c:forEach>
</table>
和Javascript
$("body").on("click", "[data-editable]", function() {
var $el = $(this);
/* var $input = $('<input style="width:500px; height:100px"/>').val( $el.text() ); */
var $input = $('<textarea rows=5 style="width:500px"/>').val($el.text());
$el.replaceWith($input);
var save = function() {
var $td = $("<td data-editable />").text($input.val());
$input.replaceWith($td);
};
$($input).blur(function() {
save();
})
});
答案 0 :(得分:1)
您可以使用ajax提交无格式的数据。 我可以看到您正在使用jQuery库。因此,我正在基于该库编写代码。
在HTML中:
<table class="bg-light table table-hover" style="overflow:hidden">
<th>Word</th>
<th>Dialogue</th>
<th>Practice</th>
<c:forEach items="${list}" var="engboardVO">
<tr>
<td data-name="word" data-editable>${engboardVO.word}</td>
<td data-name="dialogue" data-editable>${engboardVO.dialogue}</td>
<td data-name="practice" data-editable>${engboardVO.practice}</td>
</tr>
</c:forEach>
</table>
在javascript中:
$("body").on("click", "[data-editable]", function() {
var $el = $(this);
var $input = $('<textarea rows=5 style="width:500px"/>').val($el.text());
$el.html($input);
var field_name = $el.attr('data-name');
var save = function() {
var $val= $input.val();
$.ajax({
type: "POST",
url: "update-url",
data: {fieldname: field_name, fieldvalue:$input.val()},
dataType: "json",
success: function(msg) {
// do something on success
$el.html($val);
},
error: function(msg){
// do something on error
}
});
};
$($input).blur(function() {
save();
})
});
然后在服务器端,您可以将fieldvalue作为fieldname的值保存在数据库中。
基本上我们在这里做的是:
在td标签中添加了属性数据名称,其值可以与表中的字段名称相关。
使用var field_name = $ el.attr('data-name');获取javascript中属性的名称。
在ajax调用中使用发布请求将field_name和该字段的值传递给服务器。
$.ajax({
type: "POST",
url: "update-url",
data: {fieldname: field_name, fieldvalue:$input.val()},
dataType: "json",
success: function(msg) {
// do something on success
$el.html($val);
},
error: function(msg){
// do something on error
}
});
现在在服务器端,您需要按正常方式获取此数据,以便在提交表单时为发布请求获取并将其保存在数据库中。
编辑: 现在检查。您正在替换td,而必须替换td中的html。
答案 1 :(得分:0)
如果您没有表格或由于某些原因而无法使用表格,请不要担心
您仍然可以阅读网页的输入并使用它们或将其发送到服务器。
请参见以下简单示例:
var inputs = document.getElementsByTagName('input');
var data = []
for (index = 0; index < inputs.length; ++index) {
// deal with inputs[index] element.
data.push(inputs[index].value)
}
var json = JSON2.stringify(data);
$.ajax({
type: "POST",
url: "your-api-url",
data: json,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// done code
}
});