我想创建从一堆分组HTML元素的JSON对象的多个表单字段的JSON对象,这是我的标记,创建使用jQuery的
HTML:
<div id="locations_wrapper">
<div id="location_0" class="locations">
<div class="container">
<label for="locations_province">Province: </label>
<div>
<select id="locations_province" name="locations_province" onchange="get_cities(this);">
<option value="">Select one</option>
<option>Eastern Cape</option>
<option>Freestate</option>
<option>Gauteng</option>
<option>KZN</option>
<option>Limpopo</option>
<option>Mpumalanga</option>
<option>North West</option>
<option>Northern Cape</option>
<option>Western Cape</option>
</select>
</div>
</div>
<!-- City -->
<div class="container">
<label for="locations_city">City: </label>
<div>
<select id="locations_city" name="locations_city">
<option value="">Select one</option>
</select>
</div>
</div>
<!-- Towns -->
<div class="container">
<label for="locations_towns">Towns: </label>
<div>
<input type="text" name="locations_towns" id="locations_towns" />
</div>
</div>
</div>
</div>
目前我克隆这3个字段,并将它们附加到父div位置_wrapper,我也递增每个字段的id属性,现在的问题是我需要获取所有克隆的元素,并以某种方式使用jQuery/ajax捕获所有每个位置的数据存入数据库。
我怎么能得到这些信息?
这里是一些jQuery的我写的,基本上做同样的事情,但有一个田间,而不是3:
var sections = $('#systems_wrapper').find('.dropDowns');
var newArray = new Array();
sections.each(function(){
var id = $(this).attr('id');
var val = $(this).val();
var o = { 'id': id, 'value': val };
newArray.push(o);
});
$.ajax({
type: 'POST',
url: 'qwer.php',
dataType: 'json',
data: { json: JSON.stringify(newArray) }
});
也许我可以尝试创建具有3个字段省,市,镇一个JSON对象?我有点不确定。
Thanx提前!
非常感谢您抽出宝贵时间来解释它,因为这非常有帮助!有一件事情似乎正在发生,虽然我选择[name ='locations_towns']不是通过发送一个值,即使我修复了代码,因为它应该是一个输入,而不是一个select,我仍然得到一个空的变量,当它在回调函数中返回给我时。 – Odyss3us 2010-09-13 08:21:27
oops - 你是对的,它*应该*是'input'而不是'select'。接得好。我又犯了一个错误(这可能会导致你看到的问题)。值应该像这样被提取:'$(“select [name ='locations_towns']”,location).val()'。该函数的正确名称是['val()'not'value()'](http://api.jquery.com/val/)。让我们知道这是否解决它。 – Lee 2010-09-13 09:05:13
我在代码示例中做了这些修复。此外,修复了“locations_towns”的拼写错误。 – Lee 2010-09-13 09:12:33