我用add/del row函数创建了一个表,然后这些行(原始行和复制行)被提取,转换成JSON并通过 AJAX 调用发送到我的django服务器。
但问题是原始行的值保留在克隆行上,我不太确定错误在哪里。
对我的代码进行一些审查可以帮助我解决这个问题。
下面是我代码源代码:
//the add row function
// I've make sure that the value is not cloned into the future row
$(document).on('click', '#add_row', function(e){
$('#del_row').prop('disabled',false)
// console.log('add clicked')
var index = $('.duplicable').length
var newId = '#duplicable'+index;
var row = $('#duplicable').clone().attr("id",newId).find(':input').prop('value', '').end();
$('#Attributes_table tbody').append(row);
});
//then the actual ajax function
$(document).on('click', '#product-submit', function(e){
var attrs = [];
$('.duplicable').map(function(){
attrs.push({
'id' : $(this).attr('id'),
"finition": $('.finition').val(),
"size": $('.size').val(),
"price": $('.price').val(),
"img": $('.img').val(),
})
}).get();
$.ajax({
type: 'POST',
url : window.location.pathname,
data : {
'ajax_post' : 'create_product',
'designation': $('#id_designation_input').val(),
'description': $('.editor-content').text(),
'selected_ttag': $('#id_product_select_ttag').val(),
'selected_ctag': $('#id_product_select_ctag').val(),
'selected_otag': $('#id_product_select_otag').val(),
'attr': JSON.stringify(attrs)
},
success : function(){
console.log(attrs)
},
error: function(xhr, errmsg, err){
console.log(xhr.status + ":"+ errmsg+ err)
}
});
});
以下是打印输出:
ajax_post create_product
designation
description
selected_ttag
selected_ctag
selected_otag
attr [{"id":"duplicable","finition":"black","size":"S","price":"19.99","img":"C:\\fakepath\\certificats.png"},{"id":"#duplicable1","finition":"black","size":"S","price":"19.99","img":"C:\\fakepath\\certificats.png"}]
这是实际输入
如有任何反馈,我们将不胜感激。
1条答案
按热度按时间jjhzyzn01#
clone()函数没有问题,问题在于 AJAX 调用之前的dict构造