Как обновить мой стол по тайм-ауту в 3 секунды - PullRequest
3 голосов
/ 30 апреля 2019

У меня проблемы с обновлением только моей таблицы на моей странице индекса приложения mvc5 по истечении 5 секунд. Я прочитал довольно много постов об этом здесь, но мое понимание очень простое.

У меня есть ActionResult с именем Index, который возвращает хранимую процедуру для заполнения раскрывающегося списка, когда я выбираю значение и отправляю его. У меня есть другой контроллер с именем Index, но над ним есть [HttpPost], теперь он сохраняет выбранное значение выпадающий список передает его другому хранимому процессу и возвращает модель в представление для создания таблицы. Я хочу обновить эту таблицу за 5 секунд. Я попытался сначала обновить с помощью кнопки, используя следующие ниже.

<tbody id="refresh"> <!--The Id I use for my table -->
<input id="butt" type="submit" value="Go" /> <!--The button to refresh-->

<script>
    $("#butt").click(function () {
        $.ajax({
            url: '/Home/Index',
            success: function (data) {
                $("#refresh").html(data);
            }
        })
    })
</script>

Вот мой контроллер:

DBEntities  db = new DBEntites();

public ActionResult Index()
{
    CircuitClass model = new CircuitClass();

    model.MyCircuit = db.GetAllCircuits(DateTime.Today);
    return View(model);
}

[HttpPost]
public ActionResult Index(CircuitClass model)
{
    string circuit = model.SelectedCircuit.ToString();
    int raceNo = model.SelectedRaceNo;
    if (model.SelectedRaceNo == 0 || (model.SelectedCircuit == null))
    {
      return View("~/Views/Shared/Error.cshtml");
    }
    else
        model.MyResults = db.GetCircuitResults(circuit, raceNo, DateTime.Today).ToList();
    model.MyCircuit = db.GetAllCircuits(DateTime.Today);

    return View(model);
}

При отладке я нажимаю кнопку, которая приводит меня к контроллеру индекса, над которым нет [HttpPost], где мне нужно обновить таблицу. Я ожидал, что он загрузит контроллер с [HttpPost]. Мой подход может быть совершенно неверным, кто-нибудь может помочь?

1 Ответ

1 голос
/ 30 апреля 2019

Используйте функцию setInterval от js для вызова функции display каждые 5 секунд

$("#butt").on('click', display());

function display()
{
    $.ajax({
        url: '/Home/Index',
        success: function (data) {
            $("#refresh").html(data);
        }
    })
}

setInterval(function(){ display(); }, 5000); //Refreshes every 5 sec

(Или) trigger нажатие кнопки каждые 5 секунд

$("#butt").click(function () {
    $.ajax({
        url: '/Home/Index',
        success: function (data) {
            $("#refresh").html(data);
        }
    })
})

setInterval(function(){  $("#butt").trigger('click') }, 5000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...