Member 14164795 Ответов: 1

AJAX-запрос на основных страницах ASP.NET бритва - не обновление полей


(После внесения изменений на основе этот вопрос я задал вчера)

Моя цель-динамически обновлять два поля каждый раз, когда происходит изменение выпадающего списка. В моем примере выпадающий список представляет собой список сотрудников, и мне нужно, чтобы поля группы/подгруппы обновлялись каждый раз, когда он меняется. Я пытаюсь вызвать созданный мной метод C#, который запускает 2 запроса linq и устанавливает результат в поля. Я убедился, что этот метод работает правильно.

Теперь у меня есть следующий метод в моем файле "редактирование.HTML-код.в CS":
// Updates chosen specialist's group and subgroup
[BindProperty]
public GroupModel Group { get; set; }
public class GroupModel
{
    public string subGroup { get; set; }
    public string group { get; set; }
}
public ActionResult OnPostSearchCurrGroup()
{
    var subgroupQuery = (from c in _context.ppcc_matrix
                         from e in _context.employees
                         from s in _context.subGroups
                         where c.employeesID == e.Id
                         where e.subGroupsID == s.Id
                         select s.subgrp_nm).FirstOrDefault();
    //subGroups.subgrp_nm = subgroupQuery;

    var groupQuery = (from c in _context.ppcc_matrix
                      from e in _context.employees
                      from s in _context.subGroups
                      from g in _context.groups
                      where c.employeesID == e.Id
                      where e.subGroupsID == s.Id
                      where s.groupsID == g.Id
                      select g.grp_nm).FirstOrDefault();
    //groups.grp_nm = groupQuery;

    var result = new GroupModel { subGroup = subgroupQuery, group = groupQuery };
    return new JsonResult(result);
}


У меня есть эти три поля в "Edit.cshtml":
<div class="form-group">
    <label asp-for="ppcc_matrix.employeesID" class="control-label"></label>
    <select asp-for="ppcc_matrix.employeesID" class="form-control" id="employee" asp-items="ViewBag.employeesID">
        <option disabled selected value="0" style="display:none">--select--</option>
    </select>
</div>
<div class="form-group">
    <label asp-for="Group.group" id="grptxt">Group</label>
    <input asp-for="Group.group" id="grpnm" class="form-control" disabled />
</div>
<div class="form-group">
    <label asp-for="Group.subGroup" id="subgrptxt">SubGroup</label>
    <input asp-for="Group.subGroup" id="subgrpnm" class="form-control" disabled />
</div>


Используя три идентификатора, которые я им присвоил, я запускаю этот запрос javascript и ajax в одном файле:
@* Dynamically updates the view to show chosen specialist's group and subgroup*@
<script language="javascript" type="text/javascript">
    var employee = document.getElementById('employee');
    employee.addEventListener('change', UpdateGroup);
    function UpdateGroup() {
        $.ajax({
            type: 'post',
            url: '/edit?handler=searchcurrgroup',
            contenttype: "application/json; charset=utf-8",
            datatype: 'json',
            data: '{}',
            async: 'true',
            success: function (data) {
                OnSuccessed(data.subGroup) {
                    document.getElementById('subgrpnm').append(subgroupQuery);
                }
                OnSuccessed(data.group) {
                    document.getElementById('grpnm').append(groupQuery);
                }
            }
        })
    }
</script>


Тем не менее, ничего не происходит, и я не получаю никаких ошибок.

Что я уже пробовал:

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

Dominic Burford

В какой момент запрос AJAX завершается неудачей? Вы попали в обработчик страниц бритвы? Ты бьешь метода успехи "Аякса"? Какой ответ получает ваш AJAX - запрос от обработчика страниц?

1 Ответов

Рейтинг:
0

Christian Graus

Знаете ли вы, как использовать инструменты отладки Chrome? Вы должны использовать их, чтобы наблюдать за этим кодом, видеть, что возвращает запрос и видеть, что происходит, когда он успешно выполняется.

Ваш код выглядит так, как будто он определяет две функции в вашем методе успеха, но на самом деле ничего не вызывает? Что такое OnSuccessed?

Поскольку вы используете jquery, вы должны использовать jquery для установки ваших элементов. Но в целом я бы рекомендовал отойти от 2004 года и изучить использование React, Angular или даже Handlebars для создания шаблона вашего пользовательского интерфейса, а не постоянно искать DOM