Как создать ненавязчивый AJAX в ASP.NET Основные страницы Razor перед отправкой?

#jquery #asp.net-core #asp.net-ajax

#jquery #asp.net-ядро #asp.net-ajax

Вопрос:

Я пытаюсь отключить кнопку при отправке запроса ajax. единственное, что запускается, это console.log . Я думал, что смогу добиться этого, если использую опцию beforeSubmit в ajax, но ненавязчивый AJAX не дает этой опции. Есть ли какой-нибудь способ, которым я могу этого добиться?

Заранее большое вам спасибо

 
@using (Ajax.BeginForm("OrderDetails",
                       "Checkout",
                       null,
                       new AjaxOptions
                       {
                           HttpMethod = "POST",
                           UpdateTargetId = "Checkout",
                           InsertionMode = InsertionMode.Replace,
                           OnBegin = "disableBtnBegin()",
                           OnSuccess = "disableBtnSuccess()",
                           OnFailure = "disableBtnFailure()",
                           LoadingElementId = "loaderSubmit"
                       },
                       new { id = "OrderDetailsForm" }))
{
    

    <div class="card mb-3">
        <div class="card-body">
            <h3 class="card-title"></h3>
           
            <h3 class="card-title"></h3>
            <div class="form-group">
                <div class="form-check row">
                    <div class="check-bx-wrapper col-12">
                        <div class="input-check">
                         
                        </div>
                    </div>
                </div>
            </div>
            <div id="shippingAddressGroup" class="company-account-form row shipping_address w-100">
               
            </div>
            <div class="col-12">
                <button type="submit" class="btn btn-custom-primary" id="nextStepBtn">
                    <span id="loaderSubmit" class="loader-hidden lds-dual-ring" style="display: none;"></span>
                
                </button>
            </div>
        </div>
    </div>
}


    <script>

        function disableBtnBegin() {

            console.log("on begin");
  
            var nextBtn = $('#nextStepBtn');
        
            nextBtn.prop("disabled", true);

        }


    </script>

 

Ответ №1:

Я провел тест с тем же кодом, которым вы поделились, который хорошо работает на моей стороне, кнопка может быть отключена, как и ожидалось.

введите описание изображения здесь

Вы можете проверить фактический HTML-источник этой кнопки в браузере и проверить, установлен ли disabled атрибут.

введите описание изображения здесь

И вы можете попробовать следующий фрагмент кода, а затем проверить, работает ли он.

 $('#nextStepBtn').attr("disabled", true);
 

Кроме того, пожалуйста, перепроверьте, установили ли вы / включили в свой проект ненавязчивую клиентскую библиотеку ajax jQuery и добавьте ссылку на необходимые библиотеки jQuery.

 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>