好的我需要帮助才能正确编写jquery代码和php
这个想法
我希望用户生成多个表一次点击“添加表”按钮,用户可以在每个表内生成属性一次点击“添加属性”按钮
我想使用Json和jquery.post()将此表单作为多维数组或嵌套对象发送,然后php代码可以访问每个字段
IMAGE: http://s11.postimg.org/4haqtm8tf/image.jpg
HTML
<form id="step_2"> <b>Type name of the table:</b>
<input type="button" value="Add table" class="add" id="add_t" class="space" />
<br/>
<input type="hidden" id="db" name='db_name' value="<?php echo $db; ?>" />
<!----------------->
<div id="table_wrap">
<fieldset id="table1">
<legend>Table:</legend>
<input type="text" class="tablename" id="table_name" name="table_name" />
<input type="button" value="Add attribute" class="add space" id="add" />
<br/>
<div class="fieldwrapper" id="field1">
<b>Attribute</b>
<input type="text" class="fieldname" id="att" name="att" />
<select class="fieldtype" id="type" name="type">
<option value="num">Number</option>
<option value="text">Text</option>
<option value="dt">Date/Time</option>
</select>
</div>
</fieldset>
</div>
<!--------------------->
<input type="button" id="back_2" value="Back" />
<input type="button" id="save_2" value="Save" />
<input type="button" id="next_2" value="Next" />
</form>
答案 0 :(得分:0)
我认为JSON数据可以是这样的:
[
{
"table_name":"table1",
"attributes":[
{
"attr_name":"id",
"type":"integer"
},
{
"attr_name":"name",
"type":"string"
}
]
},
{
"table_name":"table2",
"attributes":[
{
"attr_name":"id",
"type":"integer"
},
{
"attr_name":"category_id",
"type":"integer"
}
]
}
]
使用jQuery,您可以轻松生成此数据结构。这是我的建议代码,我没有测试过,但想法是它;)
function saveTableData() {
var tables = [];
$("#table_wrap fieldset").each(function(index, fieldset){
// Contains the whole table data
var table_data = {};
table_data['table_name'] = $(fieldset).find("#table_name").val();
// Contains the attributes data
var attributes = [];
// To loop all attributes fields
$(fieldset).find(".fieldwrapper").each(function(idx, attr){
var attr = {};
attr['attr_name'] = $(attr).find("#att").val();
attr['type'] = $(attr).find("#type").val();
// Add to the attributes collection.
attributes.push(attr);
});
// Then attach attributes to the table data object.
table_data['attributes'] = attributes;
// Finally add the table data to final result collection.
tables.push(table_data);
});
// Do something more with result ...
$.post("/save", {"tables": tables}, function(response) {
// ...
})
}
然后在您的服务器端代码中,您只需要处理参数&#34;表&#34; (值是一个数组),然后通过它来做更多的事情。
希望有所帮助:)