автоматическое обновление вида MVC - PullRequest
0 голосов
/ 16 февраля 2011

Я хочу обновлять мое представление MVC, используя jquery.load и ajax каждые 3 секунды.Какой будет синтаксис для этого?Я использовал приведенный ниже код, но он не работал.

$(document).ready(function() {
  setInterval(function() {
        var url = '<%= Url.Action("Index", "LiveGame") %>';
        $.getJSON(url, null, function() { });
    }
                    , 3000);
});

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Вы должны использовать load или get метод jQuery. getJSON возвращает результат в формате JSON, а ваше представление возвращает HTML.

Ваш код может выглядеть примерно так:

$(document).ready(function() {
    setInterval(function() {
        var url = '<%= Url.Action("Index", "LiveGame") %>';
        $('body').load(url);
    }, 3000);
});
1 голос
/ 16 февраля 2011

Конечно, это ничего не обновит - в конце концов, это вызов ajax. Вы также должны реализовать код, который будет принимать значения, возвращаемые методом ajax, и динамически помещать его в представление ...

ИЛИ вы делаете то, что вам подсказывает @gor, а это, кстати, НЕ ajax.

Редактировать Предположим, что ваши данные JSON возвращают поле name, и в вашем представлении есть текстовое поле ввода с ID = txtName. Так вот (ajax) способ сделать это:

$(document).ready(function() {
    setInterval(function() {
            var url = '<%= Url.Action("Index", "LiveGame") %>';
            $.getJSON(
                url,
                null,
                function(data) {
                    $('#txtName').val(data.name);
                }
            );
        },
        3000
    );
});

Обратите внимание, что вы НЕ обновляете «представление» - вы индивидуально обновляете каждое возвращенное значение JSON в соответствующие им элементы HTML. В этом суть ajax - возможность динамически изменять значения, используя DOM-манипуляции, не загружая совершенно новую страницу с веб-сервера ...

Это также означает, что ваш серверный метод должен также возвращать действительный объект JSON.

Это может показаться слишком большой работой - если это так, и вы действительно просто хотите обновить страницу, не имея дело с асинхронными вызовами ajax и сериализацией объектов JSON, просто сделайте то, что говорит @gor, что означает обновление вся HTML-страница каждые 3 секунды ...

...