【发布时间】:2013-01-21 10:22:30
【问题描述】:
我有一个包含可重复字段的表单,它会生成以下 JSON 数据:
{
"mainmember": [
{
"name": "testtest",
"surname": "test",
"id": "8509295266086",
"age": "27",
"gender": "Male",
"townofbirth": "george",
"email": "test@test.com",
"contact": "0112121211",
"passport": "1111111111111",
"postal": "grjiubrwg",
"postal_code": "0010",
"residential": "tytyytyttyytyt",
"residential_code": "4422"
}
],
"dependant1": [
{
"name": "testDUP",
"surname": "testDUP",
"id": "4802235040081",
"age": "64",
"gender": "Male",
"townofbirth": "tehjte",
"cell": "4774811845",
"email": "testDUP",
"passport": "8202255133088",
"relationship": "spouse"
}
],
"dependant2": [
{
"name": "testDUP2",
"surname": "testDUP2",
"id": "1111111111111",
"age": "45",
"gender": "F",
"townofbirth": "knysnasw",
"cell": "0000000000",
"email": "testDUP2",
"passport": "2222222222222",
"relationship": "inlaw"
}
]
}
现在可复制字段是依赖项,在这个 JSON 中有 2 个依赖项,但在重复时它增加到“dependant3、dependant4、dependant5”。
目前,当我提交并发送到 PHP 时,我可以计算依赖项:
<?php
$json = $_POST['parameters'];
$json_string = stripslashes($json);
$data = json_decode($json_string, true);
$datasetCount = count($data); // returns count of array items of any array
echo "<h1>There are $datasetCount Dependants</h1>";
$i = 0;
foreach ($data as $each_dep) {
$i++;
echo "<h2>Dependant $i</h2>";
while (list($key, $value) = each ($each_dep)) {
echo "$key: $value<br />";
}
}
?>
以及我正在使用的 jQuery 发送函数:
jQuery('#submit').click(function(){
jQuery('div[class*="mainmember"]').each(function(k, v){
mainmember = {};
mainmember['id'] = '';
$(v).find('.id').each(function(){
mainmember['id'] += $(this).val();
});
mainmember['age'] = '';
$(v).find('.age').each(function(){
mainmember['age'] += $(this).val();
});
mainmember['gender'] = $(v).find('.gender').val();
result['mainmember'] = [mainmember];
});
jQuery('div[class*="dependant"]').each(function(k, v){
dep_counter++
dependants = {};
result['dependant'+dep_counter] = [dependants];
dependants['id'] = '';
$(v).find('.id').each(function(){
dependants['id'] += $(this).val();
});
dependants['age'] = '';
$(v).find('.age').each(function(){
dependants['age'] += $(this).val();
});
dependants['gender'] = $(v).find('.gender').val();
});
var jsonData = JSON.stringify(result);
console.log(jsonData);
});
我只是无法获取其他数据,例如姓名、姓氏等。 我需要像这样将其解析为电子邮件:
主要成员: 详情
从属 2: 详情
从属 3: 详情
非常感谢任何帮助。
【问题讨论】:
-
你想做什么?你能举一个包含重复的例子吗?
-
试图清理它更多..希望它有所帮助
-
在您的表格中,
mainmember有多少个?一个还是多个? -
为什么不将依赖项存储在数组中?为什么要将 mainmember 存储在数组中?它不总是包含一个元素吗?我建议像
"mainmember": { /* main member data */ }, "dependants": [{ /* dep1 data */ }, { /* dep2 data */ }]等