Плагин таймера JQuery при нажатии кнопки страницы ASP.NET MVC - PullRequest
1 голос
/ 16 марта 2010

У меня есть страница ASP.NET MVC с кнопкой «Начать Live Meeting».

Когда пользователь нажимает на эту кнопку, он вызывает метод контроллера с именем «StartLiveMeeting», который возвращает строку.

Если контроллер возвращает пустую строку, то я хочу, чтобы Timer вызывал метод Controller, пока он не вернет строку.Я использую плагин jquery.timer.js (http://plugins.jquery.com/files/jquery.timers-1.2.js.txt)

При нажатии кнопки вызывается метод контроллера.Но Таймер не инициирует.Я указал 5 секунд для вызова метода контроллера.

Я ценю ваши ответы.

Код на странице ASPX:

//When "Start Meeting" button is clicked, if it doesn’t return empty string, Display that text and Stop Timer. Else call the Timer in every 5 sec and call the StartLiveMeeting Controller method.

$("#btnStartMeeting").click(function() {
    var lM = loadLiveMeeting();
    if (lM == "") {
        $("#btnStartMeeting").oneTime("5s", function() {
        });
    } else {
        $("#btnStartMeeting").stopTime("hide");
    }
    return false;
});
function loadLiveMeeting() {
    $("#divConnectToLive").load('<%= Url.Action("StartLiveMeeting") %>', {}, function(responseText, status) {
        return responseText;
    });
}

<asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="server">

<div id="divStartMeetingButton"><input id="btnStartMeeting" type="submit" value="Start Meeting" /> 
           </div>
           <div id = "divConnectToLive">
               <div id="loading" style="visibility:hidden"> 
                    <img src="../../img/MedInfo/ajax_Connecting.gif" alt="Loading..." />
               </div>
           </div>

Метод контроллера:

[HttpPost]
    public string StartLiveMeeting()
    {
        int intCM_Id = ((CustomerMaster)Session["CurrentUser"]).CM_Id ;
        var activeMeetingReq = (from m in miEntity.MeetingRequest
                                where m.CustomerMaster.CM_Id == intCM_Id
                                && m.Active == true
                                select m);

        if (activeMeetingReq.Count() > 0) 
        {
            MeetingRequest meetingReq = activeMeetingReq.First();
            return "<a href='" + meetingReq.URI + "'>" + "Connect to Live Meeting</a>"; 
        } else {
            return ""; 
        }
    }

1 Ответ

1 голос
/ 16 марта 2010

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

$("#btnStartMeeting").click(function() {
    loadLiveMeeting();
    return false;
});
function loadLiveMeeting() {
    $("#divConnectToLive").load('<%= Url.Action("StartLiveMeeting") %>', {}, function(responseText, status) {
        if (responseText == "") {
            $("#btnStartMeeting").oneTime("5s", function() {
                 // call load meeting again
            });
        } else {
            $("#btnStartMeeting").stopTime("hide");
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...