0

我有这个:

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

4

2 回答 2

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>
于 2013-01-23T23:02:42.863 回答
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){

    });
}
于 2013-01-23T23:14:51.613 回答