在selectbox上更改ajax中的状态

时间:2015-05-17 18:14:49

标签: javascript php jquery ajax php-5.3

我有一个问题,因此,此代码仅适用于第一个选择框,我不明白为什么。对于数据库上的第一个选择框更新工作正常但如果我尝试更改第二个选择框的法规,则状态保持不变。你能帮助我吗?对不起我的英文

我的观点:

{% for gift in aFilterGifts %}

<form action="" id="updateStatus" method="post">
    <select id="statusSelect"
            name="{{ gift.id }}"
            class="form-control"
            onChange="updateCadeauStatus({{ gift.id }})">
            {% for key,statut in form_logistique.statut.choices %}
                <option value="{{ key }}"
                    {% if gift.etat == key %}selected="selected"{% endif %}>
                    {{ statut }}
                 </option>
            {% endfor %}
   </select>
</form>
{% endfor %}

 <script>
    function updateCadeauStatus(id) {
        var id = id;
        var selectedName = $("#statusSelect option:selected").val();
        var url_deploy = 'http:localhost/updateStatus'
        console.log(id);
        console.log(selectedName);
        $.ajax({
            url: url_deploy,
            type: "POST",
            async: true,
            data: { id_cadeau:id, id_status:selectedName}
        });
    }
</script>

控制器:

public function updateStatus(){
    $iGiftId    = $_POST['id_cadeau'];
    $iNewStatus = $_POST['id_status'];
    $bUpdate = $this->updateStatusByGiftId($iGiftId, $iNewStatus);

}

模特:

public static function updateStatusByGiftId($iGiftId, $iStatusId){
    $request = sprintf( ' UPDATE `%s` set etat = %d WHERE id_instant_gagnant = %d ', $table, $iStatusId, $iGiftId);

    return Mysqli::query($request, $database);
}
提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的所有选择框都具有相同的ID id="statusSelect"。 这不是有效的HTML。 一种解决方案是将礼品ID附加到id标签以创建唯一ID:

{% for gift in aFilterGifts %}
    <form action="" id="updateStatus{{ gift.id }}" method="post">
        <select id="statusSelect{{ gift.id }}"
                name="{{ gift.id }}"
...

和剧本:

<script>
    function updateCadeauStatus(id) {
        var id = id,
            selectedName = $("#statusSelect" + id + " option:selected").val(),
            url_deploy = 'http:localhost/updateStatus';

        console.log(id);
...