/ / jQuery、asp.net-mvc、asp.net-mvc-2のJQueryタイマープラグイン

ASP.NET MVCページボタンのJQueryタイマープラグイン - jquery、asp.net-mvc、asp.net-mvc-2

私は、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="/images/../../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

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