我有这个:
<? foreach ($atributes as $key => $value) { ?>
<select size="10" id="attr_id_<?=$value['id']?>">
<? foreach ($value['attrs'] as $key => $value) { ?>
<option value="<?=$value['value_id']?>" ><?=$value['name']?></option>
<? } ?>
</select>
<? } ?>
我需要通过ajax将这些选定的选项发送到控制器。
我通常会将数据发送到这样的控制器:
function save_values() {
$.post("/dir/page.php",
{
api:"update_values",
attr_id:attr_id,
value_id:value_id,
},
function(data){
});
}
让控制器听取这样的帖子请求:
if($this->input->get_post('api') == "update_values") {
$attr_id = $this->input->get_post('attr_id');
....
我希望将所有选择的ID值和选项值相互关联,如下所示:
array
(
'attr_id_XX' => 'XX',
'attr_id_XX' => 'XX,
);
它不需要是一个数组,但我需要以关系方式处理它们,因此我可以使用所选值保存每个attr_id。
答案 0 :(得分:0)
您可以将选择括在表单中并使用jQuery的序列化函数。
请考虑以下事项:
(请注意,名称属性必须出现在选择中)
<form id="myForm">
<select name="attr1">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select name="attr2">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select name="attr3">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>
<script type="text/javascript">
$(document).ready(function() {
var url = ''; // ...
$.ajax(url, {
type: 'post',
data: $('#myForm').serialize()
});
});
</script>
答案 1 :(得分:0)
您可以尝试使用这样的JS函数
function save_values() {
var select_data = {'api': 'update_values', 'value_id': value_id};
$('select').each(function() {
select_data[$(this).attr("id")] = $(this).find(":selected").attr('value');
});
$.post("/dir/page.php", select_data,
function(data){
});
}