/ / Wtyczka JQuery timera na przycisku strony ASP.NET MVC Kliknij - jquery, asp.net-mvc, asp.net-mvc-2

Wtyczka timera JQuery na przycisku strony ASP.NET MVC kliknij - jquery, asp.net-mvc, asp.net-mvc-2

Mam stronę ASP.NET MVC z przyciskiem "Start Live Meeting".

Kiedy użytkownik kliknie ten przycisk, wywołuje metodę kontrolera o nazwie "StartLiveMeeting", która zwraca ciąg znaków.

Jeśli kontroler zwróci pusty ciąg znaków, chcę, aby Timer wywoływał metodę kontrolera, aż zwróci ciąg znaków. Używam wtyczki jquery.timer.js ( http://plugins.jquery.com/files/jquery.timers-1.2.js.txt )

Po kliknięciu przycisku wywoływana jest metoda kontrolera. Ale Timer nie inicjuje. Podałem 5 sekund, aby zadzwonić do metody kontrolera.

Doceniam twoje odpowiedzi.

Kod na stronie 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="/images/../../img/MedInfo/ajax_Connecting.gif" alt="Loading..." />
</div>
</div>

Metoda kontrolera:

[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 "";
}
}

Odpowiedzi:

1 dla odpowiedzi № 1

The load() metoda jest asynchroniczna, więc musisz albo uczynić ją synchroniczną, albo umieścić logikę odpowiedzi w wywołaniu zwrotnym.

$("#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");
}
});
}