Создание оповещения AJAX для пользователя при изменении на стороне сервера - PullRequest
0 голосов
/ 08 июля 2011

У меня есть сайт, где сотрудники могут входить в систему и управлять вещами.

У каждого сотрудника есть список дел. Элементы могут быть добавлены в список сотрудников по нескольким причинам, например, при регистрации нового клиента. Когда элемент добавляется в список сотрудников, я бы хотел, чтобы на экране вошедшего в систему сотрудника отображалось диалоговое окно ajax, которое затем можно просто отклонить.

Какой лучший способ сделать это? Я использую C #, MVC 3 и Razor

Ответы [ 4 ]

2 голосов
/ 09 июля 2011

Не используйте setinterval, потому что он сработает независимо от того, что ваша функция вызова завершена. Вместо этого используйте settimeout. И вызовите его снова последним внутри вашей функции.

2 голосов
/ 08 июля 2011

Вы можете опросить сервер на наличие обновлений, используя метод setInterval javascript. Это позволит вам отправлять запросы AJAX на сервер через регулярные промежутки времени, чтобы проверять наличие обновлений, и если выполнено какое-либо условие, предупредить пользователя.

Например, вы можете выполнить действие контроллера следующим образом:

[Authorize]
public ActionResult Poll()
{
    bool isUpdated = CheckForUpdates(User.Identity.Name);
    return Json(isUpdated, JsonRequestBehavior.AllowGet);
}

и в представлении:

var intervalId = window.setInterval(function() {
    // send AJAX requests every 4 seconds to check for updates
    $.getJSON('@Url.Action("poll")', function(isUpdated) {
        if (isUpdated) {
            // TODO: use some fancy popup instead of an alert :-)
            alert('There are updates');
            window.clearInterval(intervalId);
        }
    });
}, 4000);

Еще одна техника, которую вы можете использовать, - сервер, отправляющий уведомления клиенту при наличии обновлений. HTML5 WebSockets позволяет вам сделать это. Преимущества в том, что он гораздо более оптимизирован, поскольку позволяет избежать непрерывного опроса и многочисленных запросов AJAX, а недостатки заключаются в том, что он пока еще не широко поддерживается браузерами. Современные браузеры поддерживают его, но поскольку он все еще является черновиком, он может быть изменен, поэтому он не очень популярен в публичном Интернете. С другой стороны, если у вас есть контроль над браузерами пользователей, это может быть очень хорошим решением.

Вы можете зайти в блог этого парня , если решите пойти по этому пути.

0 голосов
/ 08 июля 2011

Используйте ajax-функции Jquery на стороне клиента для опроса сервера на наличие обновлений.Например:

$.get("/service/getNewItems/", function (data) {
        if (data != null) {
            // display new items in a div
        }
        else {
            //alert('null');
        }
    });
0 голосов
/ 08 июля 2011

Вы можете использовать диалоговое окно jquery UI:

http://jqueryui.com/demos/dialog/

Очень хорошо подходит для вашего случая.

Надеюсь, это поможет

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