私のウェブサイトでは、AJAX呼び出しでアカウントの情報を取得し、情報を表示したり編集したりできるモーダルを開きます。 AJAX呼び出しは、選択したデータベースの詳細を変更するために使用され、元の関数をリフレッシュしてモーダルを再オープンして情報を更新します。しかし、表示される詳細を収集する機能が再度実行される前に、詳細がDBで十分に速く更新されないことがある(1/2 +回完了)場合があります。Javascript x秒間スリープ
もう一度フェッチされる前に、詳細が更新されるより良い機会を与えるために、2番目の関数が実行されたときに遅延を試してみたいと思いますが、これを行う方法は不明です。私は様々なことを試みましたが、以下に示すように最も人気があると思われるものは動作しません。続行する前にコードがx時間停止するように修正する方法はありますか?
function ChangeRank(StrUsername, StrPage)
{
var StrRank = $("#sltRank option:selected").val();
//Updates info in database
ModeratorEditAccount(StrUsername, StrRank, 'Rank', StrPage);
//Displays info again
setTimeout(ModeratorActions(StrUsername, StrPage), 30000);
}
function ModeratorEditAccount(StrUsername, Value, StrDetail, StrPage)
{
$.post('http://thomas-smyth.co.uk/functions/php/fncmoderatoreditaccount.php',
{
StrUsername: StrUsername,
Value: Value,
StrDetail: StrDetail
}, function(data)
{
if (data == 0)
{
$("#mdlGeneral > div").modal("hide");
if (StrSearchType == "Basic")
{
UserBasicSearch(StrPage);
}
else
{
UserAdvanceSearch(StrPage);
}
}
else if (data == 10)
{
window.location.href = "http://thomas-smyth.co.uk/login.php";
}
});
}
function ModeratorActions(StrUsername, StrPage)
{
$.post('http://thomas-smyth.co.uk/functions/php/fncgetaccountdetails.php',
{
StrUsername: StrUsername
}, function(data)
{
var returnValue = JSON.parse(data);
if (data == 5)
{}
else
{
if (returnValue["StrGender"] == "M")
{
StrGender = "Male";
}
else
{
StrGender = "Female";
}
$("#mdlEditProfile").html('<div class="modal" tabindex="-1" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content" style="border-radius: 25px;"><div class="box box-widget widget-user-2"><div class="widget-user-header bg-yellow"><div class="widget-user-image"><img class="img-circle" src="../dist/img/user2-160x160.jpg" alt="User Avatar"></div><h3 class="widget-user-username">' + returnValue['StrSurname'] + ', ' + returnValue['StrForename'] + ' (' + returnValue['StrUsername'] + ')</h3><h5 class="widget-user-desc">Member Since: ' + returnValue['DteRegDate'] + '</h5></div>\<div class="box-footer no-padding"><ul class="nav nav-stacked"><li><a><strong>Name: </strong>' + returnValue['StrSurname'] + ', ' + returnValue['StrForename'] + '<span class="pull-right badge bg-blue" style="cursor: pointer;" onclick="ChangeNameOpen(\'' + returnValue['StrUsername'] + '\', \'' + returnValue['StrSurname'] + '\', \'' + returnValue['StrForename'] + '\', \'' + StrPage + '\')"><i class="fa fa-fw fa-edit"></i> Edit</span></a></li><li><a><strong>Username: </strong>' + returnValue['StrUsername'] + '<span class="pull-right badge bg-blue" style="cursor: pointer;" onclick="ChangeUsernameOpen(\'' + returnValue['StrUsername'] + '\')"><i class="fa fa-fw fa-edit"></i> Edit</span></a></li><li><a><strong>Date of Birth: </strong>' + returnValue['DteDoB'] + '<span class="pull-right badge bg-blue" style="cursor: pointer;" onclick="ChangeDoBOpen(\'' + returnValue['StrUsername'] + '\', \'' + returnValue['DteDoB'] + '\')"><i class="fa fa-fw fa-edit"></i> Edit</span></a></li><li><a><strong>Gender: </strong>' + returnValue['StrGender'] + '<span class="pull-right badge bg-blue" style="cursor: pointer;" onclick="ChangeGenderOpen(\'' + returnValue['StrUsername'] + '\')"><i class="fa fa-fw fa-edit"></i> Edit</span></a></li><li><a><strong>Account Rank: </strong>' + returnValue['StrRank'] + '<span class="pull-right badge bg-blue" style="cursor: pointer;" onclick="ChangeRankOpen(\'' + returnValue['StrUsername'] + '\', \'' + returnValue['StrRank'] + '\', \'' + StrPage + '\')"><i class="fa fa-fw fa-edit"></i> Edit</span></a></li></ul></div></div></div></div></div>');
$("#mdlEditProfile > div").modal("show");
}
});
}
[JavaScript.setTimeout]の可能な複製(http://stackoverflow.com/questions/10312963/javascript-settimeout) –