通过ajax发送动态生成的选择

时间:2013-01-23 22:46:59

标签: php ajax codeigniter

我有这个:

<? 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。

2 个答案:

答案 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){

    });
}