$ .when(ajaxCall)与成功

I have the following code inside my asp.net MVC view:-

$('body').on("click", "#transferserver,#transfersd,#transferfirewall,#transferrouter,#transferswitch", function () {

        $("#showoptions").dialog({
            title: "Assign Selected Records To New Rack",
            width: 'auto', // overcomes width:'auto' and maxWidth bug
            maxWidth: 600,
            height: 'auto',
            modal: true,
            fluid: true, //new option
            resizable: false
        });

        var ajaxCall = $.ajax({
            url: '@Url.Content("~/Rack/ShowTransferSelectedDialog")',
            data: {
                rackfrom: "@Model.Rack.ITsysRackID",
                assettype: $(this).attr('id')//get the id for the clciked link, so that the submit button will call the associted action method.


                },
            type: 'get',
            success: function (html) {
                $('#showoptions').html(html);
                $("#showoptions").dialog("show"); //This could also be dialog("open") depending on the version of jquery ui.
            }
        });
        $.when(ajaxCall)
.then(function (data) { showDialog(data); });
    });

I have the following questions:

  1. What are the differences between the $when(ajaxcall) and on success ?

  2. In my above code if I remove the $.when(ajaxCall) the dialog box will still be displayed . so is there any need to have it?

Thanks

EDIT But one benefit i find for using $.when(ajaxCall) is that i have defined a custom authorization attribute as follow:-

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]

    public class CheckUserPermissionsAttribute : AuthorizeAttribute
    {

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {


        }
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {

            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {

                var viewResult = new JsonResult();
                viewResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                viewResult.Data = (new { IsSuccess = "Unauthorized", description = "Sorry, you do not have the required permission to perform this action." });
                filterContext.Result = viewResult;

            }

        }
    }

currently if the user clicks on the link to display the dialog box and he is not authorize to do so , he will receive a jAlert containing the unauthorized message as follow:- ![enter image description here][1]

but if i remove the $.when(ajaxCall), then the user will not receive the unauthorization message , and instead the dialog will be blank .. so can anyone advice ?

1) This is the definition of jQuery when

Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.

It make no sense to use it for a single ajax call, you want to use it for 2 or more so you wait for them to finish before executing some code.

2) I don't know what showDialog does but your dialog already shows because in your success handler you have $("#showoptions").dialog("show");. Again, no need at all to use when here