我有一个像这样的每个循环:
$.each(this, function (k, v) {
table += '<td><input type="text" name="' + k + '" id="' + k + '" /></td>';
$('#' + k).val(v);
});
我想要做的是用v中的内容填充输入类型,如果我这样做:
table += '<td><input type="text" name="' + k + '" id="' + k + '" value="' + v + '" /></td>';
使用正确的值填充值,但是当我提交表单时,它们将作为空字符串提交:
<script type="text/javascript">
$("#form").submit(function (event) {
$.post("/api/update/", $("#form").serialize(), alert('success'));
});
</script>
我不知道创建输入后$('#' + k).val(v);
为什么不起作用:(
答案 0 :(得分:1)
将“/ api / update /”添加为表单的“action”属性并删除序列化逻辑,或者(更可能是你想要的)放置
event.preventDefault()
位于提交处理程序的顶部。
问题是你的提交方法默认提交表单,发送一个请求表单的“action”属性,(在你的情况下,可能是当前页面)。因此,您的浏览器会在执行$ .post之前创建一个错误的提交。