Автозаполнение сохраняет данные только из первой отправки формы AJAX

#javascript #html #ajax #google-chrome #autocomplete

#javascript #HTML #ajax #google-chrome #автозаполнение

Вопрос:

У меня есть простая форма, и я хочу предоставить пользователю возможность выбирать ранее опубликованные данные, используя autocomplete="on" . Я отправляю форму с помощью AJAX. Я использую Google Chrome 87.0.4280.88 64 bit . Вот код, который у меня есть:

 <form action="/Debug" method="POST" id="myForm">
    Brand: <input type="text" name="brand" autocomplete="on" /><br />
    Model: <input type="text" name="model" autocomplete="on" /><br />
    <button type="submit">Submit</button>
</form>

<script>
    $(document).ready(function () {
        $('#myForm').on('submit', function (e) {
            e.preventDefault();

            $.ajax({
                url: '/Debug',
                type: 'POST',
                cache: false,
                success: function (data) {
                    console.log('data', data);
                }
            });
        });
    });
</script>
 

ЖИВАЯ ДЕМОНСТРАЦИЯ: https: //jsfiddle.net/jcuzfo69/

Когда я отправляю форму в первый раз, опубликованные данные сохраняются и отображаются в раскрывающемся списке автозаполнения. Но, когда я ввожу новые данные и снова отправляю форму, данные не сохраняются браузером.

Данные для первой отправки:

введите описание изображения здесь

Автозаполнение после первой отправки:

введите описание изображения здесь

Данные для второй отправки:

введите описание изображения здесь

Автозаполнение после второй отправки:

введите описание изображения здесь

Я ожидал бы увидеть Volkswagen в списке брендов после появления второй отправки. Почему он не сохраняется браузером?

Комментарии:

1. Не уверен, что происходит на вашей стороне, но это работает хорошо prnt.sc/wdnfq6

2. Можете ли вы опубликовать ссылку на фрагмент кода вместо изображения?

Ответ №1:

Попробуйте это, используя кнопку run snipets:

 $(document).ready(function () {
        $('#myForm').on('submit', function (e) {
            e.preventDefault();

            $.ajax({
                url: '/Debug',
                type: 'POST',
                cache: false,
                success: function (data) {
                    console.log('data', data);
                }
            });
        });
    }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="/Debug" method="POST" id="myForm">
    Brand: <input type="text" name="brand" autocomplete="on" /><br />
    Model: <input type="text" name="model" autocomplete="on" /><br />
    <button type="submit">Submit</button>
</form> 

Комментарии:

1. Я также попробовал свой сценарий с вашим фрагментом — сохраняются только данные из первой отправки.

2. Может ли это быть связано с браузером? Какой браузер и версию вы используете?

3. Я использую точно такую же версию, но она не работает для меня. Но это работает в Firefox.

4. Не уверен, почему в автозаполнении не отображаются другие отправленные значения. это странно. возможно, это кеш или что-то в этом роде, вы можете попробовать после очистки всего этого. надеюсь, это сработает