1

JQuery ダイアログ UI を使用して、ページでのアクションをユーザーに確認させています。はいの場合、API 呼び出しが行われ、ウィンドウがリダイレクトされます。いいえの場合、ダイアログは閉じます。

リダイレクトの前に、「このアクションが実行されました」のように、実際のダイアログ ボックス内に「成功」​​メッセージを表示したいと思います。これをどのように達成できるかについてのアイデアはありますか?

これが私のコードです:

$( "#dialog-confirm" ).dialog({
    resizable: false,
    height:140,
    modal: true,
    buttons: 
    {
        "Yes": function() 
        {


                    var request = '123';
            var url = '<?= $this->baseURL; ?>?rn=' + request;
                $.getJSON(url, function(data) {});  
            }


            var msg = 'Action performed';

                    //?   How do I display this message in the modal dialog window???

                    $( this ).dialog( "close" );
            var url = '<?= $this->moduleURL; ?>/cancel';        
            window.location.href = url; 


        },

        "Nevermind": function() {
                $( this ).dialog( "close" );
        }
    }
});
4

2 に答える 2

2

これは方法かもしれません。ダイアログのdivを空にして新しいテキストを追加し、タイムアウトを設定すると、3秒後にダイロージが閉じてリダイレクトが発生します

$( "#dialog-confirm" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: 
{
    "Yes": function() 
    {


                var request = '123';
        var url = '<?= $this->baseURL; ?>?rn=' + request;
            $.getJSON(url, function(data) {});  
        }


        var msg = 'Action performed';

        $( "#dialog-confirm" ).empty();

        $( "#dialog-confirm" ).text(msg);


 setTimeout(function() {
     $( this ).dialog( "close" );
       var url = '<?= $this->moduleURL; ?>/cancel';        
        window.location.href = url; 
}, 3000);



    },

    "Nevermind": function() {
            $( this ).dialog( "close" );
    }
}
});
于 2013-03-25T08:15:28.800 に答える
2

AJAX メソッドを使用し、async を false に設定します。これにより、リダイレクトを続行する前に、リクエストが返されたことを確認できます。

ダイアログの内容を設定するには、.html().

$("#dialog-confirm").dialog({
    resizable: false,
    height: 140,
    modal: true,
    buttons: {
        "Yes": function () {
            var request = '123';
            var url = '<?= $this->baseURL; ?>?rn=' + request;
            var msg = 'Action performed';
            $("#dialog-confirm").html(msg);

            $.ajax({
                dataType: "json",
                url: url,
                async: false,
                success: function (data) {
                    $("#dialog-confirm").dialog("close");
                    var url = '<?= $this->moduleURL; ?>/cancel';
                    window.location.href = url;
                }
            });
        },
        "Nevermind": function () {
            $(this).dialog("close");
        }
    }
});
于 2013-03-25T08:16:08.373 に答える