我有动态数量的div
需要格式化为存储在数据库中的数据。 div
格式中的每一种都是:
<div class="spec-list-row row row-5">
<input type="text" class="spec_name" placeholder="nama spec" />
<input type="text" class="spec_value" placeholder="isi spec" />
</div>
在提交时,每个spec-list-row
数据应该格式化为这样(如果有2个spec-list-row
):
{"spec_name_1":"spec_value_1","spec_value_2":"spec_value_2"}
相反,它的格式如下:
{"spec_name_1":"spec_value_1","spec_value_2":"spec_value_2",}
{"spec_name_1":"spec_value_1","spec_value_2":"spec_value_2",}
我生成数据的代码就是这个(在coffeescript中):
spec_str += "{"
$("div.spec-list-row").each ->
spec_str += '"' + $(this).find("input.spec_name").val() + '":"' + $(this).find("input.spec_value").val() + ","
spec_str += "}"
修改
我通过将我的代码更改为:
来解决它$("button[add-product]").click (e) ->
error = false
$("form#add-product-form input[required]").each ->
if $(this).val() is null or $(this).val() is ""
alert "* needs to be filled"
error = true
false
unless processing
if not error
e.preventDefault()
processing = true
### solution from here ###
specObj = new Object()
$("div.spec-list-row").each ->
specObj[$(this).find("input.spec_name").val()] = $(this).find("input.spec_value").val()
spec_str = JSON.stringify specObj
### to here ###
fd = new FormData()
fd.append "image", image_file
fd.append "data", $("form#add-product-form").serialize()
fd.append "specs", spec_str
$.ajax({
type: 'POST'
processData: false
contentType: false
data: fd
url: base_link+'add_product'
cache: false
timeout: 15000
}).done (msg) ->
alert msg
processing = false
.fail (res) ->
alert res.responseText
processing = false
感谢您的评论,它给了我一个提示(即使我发现它很苛刻,很确定这是出于我的正当理由)。