1

ajaxコールバックイベントでHTMLをdivにロードするシナリオがあります。私の目標は、メインコンテンツがロードされた後、新しくロードされたdivに別のdivを追加することです。主な問題は、大量のhtmlがロードされており、ロードが発生するまで待たなければならないことです。

基本的な手順は次のとおりです。

@using (Ajax.BeginForm
(
    Model.PostAction,
    Model.PostController,
    null,
    new AjaxOptions() { OnSuccess = "contentLoadSuccess", OnFailure = "contentLoadFailure" },
    new { id = "reportBase_frmViewer", name = "reportBase_frmViewer" })
)
{
  ...
}

function contentLoadSuccess(ajaxContext) {
    showWaitIndicator(false);
    if (ajaxContext.Format == null)
        //If the format is not there then the server reponded but the an unhandled exception was caught and thrown
        //the content will be the user friendly version
        setReportContent(ajaxContext);
    else {
        if (ajaxContext.Format == "HTML") {
            //If the format is HTML then it is already in the result, inject it into the content container
            showWaitIndicator(true);
            updatePageNumber(ajaxContext.PageNumber, ajaxContext.TotalPageNumber);
            setReportContent(ajaxContext.HTMLContent);
       } else
            //Export option is used. The render link has a url friendly format to start the file download
            window.location.href = ajaxContext.RenderLink + "&format=" + ajaxContext.Format;
    }
}

 function setReportContent(content) {
        $("#reportContent").html(content);
        $("#toggleToolbar").appendTo("#reportContent");//<- Does not work content takes to long and will overwrite appended div
        $("#reportContent").show();        
    }

$(document).ready(function () {
     //This does not work either
    $("#reportContent").load(function (e) {
        $("#toggleToolbar").appendTo("#reportContent");
        $("#toggleToolbar").show();                
    });
});

$("#reportContent").on("load", function (event) {
    alert("This does not work either");
    $("#toggleToolbar").appendTo("#reportContent");
 });

ロードトリガーを使用して.live()を調べましたが、減価償却されていることを確認しました。おそらく、私が考えていなかった完全に論理的な方法があります。または、おそらく私はこれについて間違った方法で行っています。どんな助けでもいただければ幸いです。

4

1 に答える 1

0

タイムアウトを使用してみてください

function setReportContent(content) {
    $("#reportContent").html(content);
    setTimeout(function(){
        $("#toggleToolbar").appendTo("#reportContent");//<- Does not work content takes to long and will overwrite appended div
        $("#reportContent").show();        
    }, 200);
}
于 2013-03-20T03:51:21.977 に答える