AJAX POST не отправляет все данные - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующий HTML код в форме, а верхний (политика) отправляет в почту, но второй нет (mfa). Я теряюсь в том, почему это происходит, какие-либо идеи?

                                    <label class="switch switch-flat">
                                        <input class="switch-input" type="checkbox" id="policy" method="post" name="policy" <?php if($row['policy'] === '1') echo 'checked="checked"';?> />
                                        <span class="switch-label" data-on="Yes" data-off="No"></span>                                      
                                        <span class="switch-handle"></span> 


                                    </label>
                                    <label for="policy">Does the vendor organization have a written Information Security policy?</label>
                                    </td>

                                </tr>
                                <tr>
                                    <td>
                                    <div class="col-md-12">

                                    <label class="switch switch-flat">
                                        <input class="switch-input" type="checkbox" name="mfa" id="mfa" method="post" <?php if($row['mfa'] === '1') echo 'checked="checked"';?> />
                                        <span class="switch-label" data-on="Yes" data-off="No"></span>                                      
                                        <span class="switch-handle"></span> 


                                    </label>
                                    <label for="mfa">Do they support and utilize multi-factor authentication?</label>
                                    </td>

Вот мои ajax для отправки данных поста. Когда я просматриваю инструменты Dev для отправляемых заголовков, я вижу много других имен HTML, но большинство из перечисленных в качестве переключателей не отправляются, за исключением верхнего «policy».

<script type='text/javascript'>
    /* attach a submit handler to the form */
$('#update').submit(function(e){
    e.preventDefault();
    $.ajax({
        url:'updateVendor.php',
        type:'post',
        data:$('#update').serialize(),
        success:function(){
            //whatever you wanna do after the form is successfully submitted
        }
    });
});
</script>

1 Ответ

1 голос
/ 04 марта 2020

Флажок считается имеющим значение только тогда, когда он установлен. В противном случае он не включается в данные отправленной формы.

С веб-сайта MDN :

Примечание. Если флажок снят при отправке формы , на сервер не передано значение, представляющее его непроверенное состояние (например, значение = не проверено); значение не отправляется на сервер вообще. Если вы хотите передать значение по умолчанию для флажка, когда он не отмечен, вы можете включить <input type="hidden"> внутри формы с теми же name и value, сгенерированными JavaScript, возможно.

Хитрость, позволяющая обойти это ограничение, состоит в том, чтобы включить скрытый ввод со значением по умолчанию. Например,

<input name="mfa" type="hidden" value="0">
<input name="mfa" type="checkbox" value="1">

При таком подходе значение mfa всегда будет передаваться с данными формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...