我正在使用AJAX来自动更新文本输入和文本区域,并将它们保存到数据库中。
一切正常,直到有两个表单相同的表单。我发现AJAX函数是从表单中获取值。我用console.log(data)
检查。我想知道最后一个表单是否覆盖了所有内容。
如果所有的名字都是唯一的,它也能很好地工作。但是,我的SQL代码会有太多的重复,如果用户制作10个这样的表单,它就没有效率了。
我要怎么做才能让这一切不发生?
谢谢你,谢谢index.php
个
<form method="post" class="form-input">
<input type="hidden" name="position" value="1" class="position">
<table>
<tbody>
<tr>
<td class="th">Offer Heading</td>
<td><input name="heading" class="text-input" type="text"></td>
</tr>
<tr>
<td class="th">Description</td>
<td><textarea name="description"></textarea></td>
</tr>
<tr>
<td class="th">Call-To-Action</td>
<td><input name="call_to_action" class="text-input" type="text"></td>
</tr>
</tbody>
</table>
</form>
字符串script.js
个
var timeoutId;
$('textarea, .text-input').on('input propertychange change', function() {
console.log('Textarea Change');
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
// Runs 1 second (1000 ms) after the last change
saveToDB();
}, 1000);
});
function saveToDB() {
console.log('Saving to the db');
var data = $(".form-input").serialize();
console.log(data);
$.ajax({
url: "",
type: "POST",
async: true,
cache: false,
data: data,
success: function(data){
console.log('completed');
}
});
}
$('.form-input').submit(function(e) {
saveToDB();
e.preventDefault();
});
型
谢谢你,谢谢
1条答案
按热度按时间ecfsfe2w1#
下面是一个片段,演示了在对这个问题的评论中提出的一些观点。我做的另一个改变是,我不再使用全局变量
timeoutId
来存储超时句柄。相反,我将此信息存储在.timeoutId
中-属性。这将防止在另一个表单中的文本字段随后被直接更改时不存储来自另一个表单的数据的错误。个字符