我正在使用带有JQuery的ajax来序列化我的表单并将数据发送到我的insert.php页面,以便它插入到我的数据库中。
我正在删除表单form.serialize中任何空的输入。这是为了确保将这些值作为NULL插入到我的数据库中。
为了使这个过程有效,我必须为每个输入设置一个默认值为no。
但是,当我这样做时,我发现当表单被序列化时,那些设置为空默认值的输入不会被发送。似乎.serialize发送输入的默认值,而不是用户输入的内容。
我该如何解决这个问题?
以下是我在表单中设置具有空白默认值的输入的方式:
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Item Price</label>
<div class="input-icon right">
<i class="fa"></i>
<input type="text" id="item_price" name="item_price" class="currency_mask form-control" value="">
</div>
</div>
</div>
这是我如何在我的ajax中省略.serialize中的空值:
$.ajax({
url: "ajax_insert.php?table=invoice_item",
type: "post",
dataType: 'json',
data: $("#item_form :input[value!='']").serialize(), //remove blank inputs so they aren't passed into the db and are inserted as NULL
success: ....
无论输入什么内容/输入项目价格字段,都会从表单中使用默认值。因为默认值为空,所以从.serialize中省略它。
我绝对需要省略序列化的空白输入,以便在我的数据库中将该字段设置为NULL。这就是为什么我在表单序列化之前省略它们的原因。
答案 0 :(得分:1)
根据您的部分问题,为您创建jsfiddle
$(document).ready(function () {
$('#item_form').on("submit", function (e) {
e.preventDefault();
alert($(this).find(":input").filter(function () {
return $.trim(this.value).length > 0
}).serialize());
});
});
将警报替换为数据变量,如下所示:
var data = $(this).find(":input").filter(function () {
return $.trim(this.value).length > 0
}).serialize();
因此你的AJAX将是这样的:
$.ajax({
url: "ajax_insert.php?table=invoice_item",
type: "post",
dataType: 'json',
data: data
success: ....