JQuery автозаполнение из БД с обратным вызовом не обновляется - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь использовать ajax для параметров автозаполнения. пользователь предполагает написать префикс, а AutoCompleteLabs получит его в качестве входных данных и вернет данные из таблицы. Сценарий JS отобразит параметры по возвращенным данным.

Моя проблема - при записи первого префикса он отображает результаты, как и ожидалось, но когда меняет префикс (или даже добавить символы) это ничего не делать.

Я борюсь с этим много времени - пожалуйста, помогите.

Сценарий:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/jquery-ui.min.js" type="text/javascript"></script>
<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/blitzer/jquery-ui.css"
      rel="Stylesheet" type="text/css"/>
<script type="text/javascript">
    $(document).ready(function () {
        $("#txtLab").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '/Admin/Snapshots/AutoCompleteLabs' ,
                    data: "{ 'prefix': '" + request.term + "'}",
                    dataType: "json",
                    type: "POST",
                    noCache: "True",
                    width: 262,
                    matchContains: "word",
                    scrollHeight: 220,    
                    cacheLength: 0,
                    allowAdditions:true,
                    noResultsText:'No results found',
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        response($.map(data, function (item) {
                            return item;
                        }));
                    },
                    error: function (response) {
                        alert(response.responseText);
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    },
                    select: function (e, i) {
                        $("#hfCustomer").val(i.item.val);
                    }
                });
            },
            minLength: 1
        });
    });
</script>

Веб-метод:

 public string AutoCompleteLabs(string prefix)

    {
        using (var db = new LabManagerDBDataContext())
        {
            db.LoadOptions = LoadOptionsLabManagerDB.Instance;
            var labs = db.GetTable<Lab>();

            var labsRecords = (from lab in labs
                where lab.Name.StartsWith(prefix)
                select lab.Name);

            return JsonConvert.SerializeObject(labsRecords.ToArray());

        }
    }

HTML:

<input type="text" id="txtLab"/>
<input type="hidden" id="hfCustomer"/>

Спасибо!

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