我正忙于表单重复,当按下提交时,我希望它以下列格式解析为json:
{ "dependant1": [
{ "name": "daniel"},
],"dependant2": [
{ "name": "steve"},
]
}
每个添加的依赖项,此时,如果我添加多个依赖项,则返回“{} {}”但如果只有一个依赖项,则返回“{”name“:”steve“}。
任何帮助都非常有用。 下面是代码:
jQuery的:
//Clone Tracking
var g_counter = 1;
var d_counter = 1;
var dependant = ["dependant"];
var group;
//Clone Tracking
//General Variables
var name_input_groups = ["name-group-1"];
//General Variables
//Generate variables
var name_fields=[0];
var name_input = "<input class='name' />";
//Generate variables
jQuery(document).ready(function(e) {
jQuery(name_fields).each(function() {
jQuery(name_input).appendTo('#name-group-1');
});
//populate jquery generated fields
//Cloning Function
jQuery('#clone').click(function() {
clone_dependant();
});
function clone_dependant() {
// Store the value of the previous Id to insert the cloned div..
var oldId = g_counter;
g_counter++;
// Clone the Dependant Div and set a new id
var $clonedDiv = jQuery('#dependant-1').clone(false).attr('id', 'dependant-'+g_counter);
var name_newDiv = 'name-group-'+ g_counter;
// Find div's inside the cloned object and set a new id's
$clonedDiv.find('#name-group-1').attr('id',"name-group-" + g_counter );
// You don't need to Loop thru the inputs to set the value
$clonedDiv.find('input').val('');
// Insert the cloned object
$clonedDiv.insertAfter("#dependant-" + oldId);
name_input_groups.push(name_newDiv);
};
//Cloning Function
function validate_gen() {};
//submit function
var dep_counter = 0
jQuery('#submit').click(function(){
$('.dependant').each(function(k, v){
dep_counter++;
var dependants = {};
dependants['name'] = jQuery("#name-group-" + dep_counter).find('input').val();
var json = JSON.stringify(dependants);
console.log(json);
});
});
});
并且继承了HTML:
<div id="dependant-1" class="dependant">
name<div id="name-group-1"></div>
</div>
<div id="test"></div>
<button id="clone">clone</button>
<button id="submit">submit</button>
和jsFiddle链接 - http://jsfiddle.net/dawidvdh/TzRu8/2/
感谢。
答案 0 :(得分:1)
你的json格格不入。您可以使用http://jsonlint.com/来 验证您的json格式。
例如,这是一种正确的格式
{ "dependant1": [{ "name": "daniel"}] },
{ "dependant2": [{ "name": "steve" }] }
您需要重新编写脚本以生成有效的json格式。按照上面的模式添加更多的依赖...除非史蒂夫是丹尼尔的子依赖,然后结构更接近你开始的。
答案 1 :(得分:1)
您的代码中有两个错误。
1:
$clonedDiv.find('#name-group-1').attr('id',"#name-group-" + g_counter );
在'name-group'之前应该没有'#':
$clonedDiv.find('#name-group-1').attr('id',"name-group-" + g_counter );
2:
dependants['name'] = jQuery("#name-group-" + g_counter ).val();
其中'g_counter'应为'dep_counter'。
<强> [更新] 强>
哦,对不起,我忘记了第三个错误:
dependants['name'] = jQuery("#name-group-" + dep_counter ).val();
应该是:
dependants['name'] = jQuery("#name-group-" + dep_counter ).find('input').val();
修复这些错误后,您可以使用以下代码获得所需内容:
var dep_counter = 0
var result = {};
jQuery('#submit').click(function(){
$('.dependant').each(function(k, v){
dep_counter++;
var dependants = {};
dependants['name'] = jQuery("#name-group-" + dep_counter).find('input').val();
result['dependant'+dep_counter] = [dependants];
});
console.log(JSON.stringify(result));
});
答案 2 :(得分:0)
只需使用以下代码即可完美运行:
var result = {};
var dependants;
jQuery('#submit').click(function(){
$('.dependant').each(function(k, v){
dependants = {};
dependants['name'] = $(v).find('.name').val();
dependants['surname'] = $(v).find('.surname').val();
dependants['id'] = idNumber;
dependants['age'] = $(v).find('.age').val();
dependants['gender'] = $(v).find('.gender').val();
dependants['cell'] = cell_values;
dependants['passport'] = pass_values;
dependants['relationship'] = $(v).find('.relationship:checked').val();
result['dependant'+g_counter] = [dependants];
});
var jsonData = JSON.stringify(result);
console.log(jsonData);
$.ajax({
type: "POST",
url: "mail.php",
dataType: "json",
data: {parameters: jsonData}
});
});
谢谢大家:)