Як я можу запобігти коду за викликом методу в asp.net

Я створюю сторінку реєстрації та перевіряю нульове поле на кнопці відправки, використовуючи jquery. якщо існує будь-яка помилка при перевірці форми, то я заважую викликати метод за замовчуванням за допомогою jquery, тому він не буде викликати код за подією кнопки клацання.

Проблема: іноді користувач двічі натиснув на кнопку, і це викликає код за клацанням кнопки події два рази з двома вставки рядків бази даних, що мають однакові дані.

Я спробував багато рішень, але, на жаль, я не зміг досягти успіху. Будь-ласка, допоможіть мені вирішити цю проблему, якщо у вас є якесь рішення.

Спасибі заздалегідь,

1
Якщо ви натискаєте кнопку клавіші Jquery, його хороша прив'язка пізніше викликає функцію ajax, тобто функція ur [WebMethod]
додано Автор Satinder singh, джерело
На стороні клієнта встановіть кнопку, яку вимкнули після натискання, і ввімкніть її після завершення ajax
додано Автор Fendy, джерело
Я використовую jQuery для перевірки лише нульової області. насправді це кнопка asp: і вставка даних виконується всередині клітинки події на стороні сервера.
додано Автор Chirag, джерело

6 Відповіді

Фактично, я завадив виклику методу сервера за замовчуванням в jquery, коли кнопка натискається за допомогою методу e.PreventDefault() jquery, якщо перевірка є помилковою. Не знаю, яка проблема, але коли я встановлюю функцію клієнтського натискання кнопки і повертаю true/false на основі перевірки замість e.PreventDefault, трюк працював відмінно для мене.

Спасибі всім, хто коментує це питання.

1
додано

Просто додайте змінну з назвою "завантаження", наприклад, і перевірте, чи виклик ajax зайнятий:

У верхній частині вашого коду:

var loading = false;

Потім на формі подайте:

$('#form').submit() {
    if(loading)
        return false;

    loading = true;

    //Ajax call
    $.ajax({
    type: "POST",
    url: "somePage.php",
    data: $('#form').serialize(),
    success: function(response) {
        loading = false;
            //Your response code
    }
    });
}
0
додано

Зразок коду

Client Side:

   $("#submit").click(function() {

          if (!YourvalidationFunction) 
              {
                    return false;
              }
           else {
                  //ajax_function is a folder contain Default.asmx page and insertNewRecord is function name (server side)
                   $.ajax({
                   type: "POST",
                   url: "ajax_function/Default.asmx/insertNewRecord",
                   data: "{ 'prefix': '" + dataString + "'}",
                   contentType: "application/json; charset=utf-8",
                   dataType: "json",
                   success: OnSuccessinsertingwcCall,
                   error: OnErrorCall
                    });
                 }
            });

сторона сервера:

[WebMethod]
public string[] insertNewRecord(string prefix)
{
         string status = "";
         List d = new List();
         try
         {
          //logic code for insertion if success set msg
             status = "New record inserted";
         }
         catch (Exception ac)
         {
             status = " Error occurs";
         }
         d.Add(string.Format("{0}", status));
         return d.ToArray();
 }
0
додано

Використовуйте one на стороні клієнта. Це дозволить запобігти подвійним клацам.

$("#button").one("click", function() {
     //validate the form.

     //if form is valid, submit form
});

Альтернативним рішенням є наявність булевого прапора.

var submitting = false;

   $("#button").click(function() {        
          if (!submitting) {
             submitting = true;

             if (formIsValid) {
                 submitting = false;
                 $("#form").submit();
             } else {
                 submitting = false;
              }
          }
   });
0
додано

Додайте вимкнений атрибут до своєї кнопки як перше, що в вашому методі js.

функція func (подія) {

$("#button").prop("disabled", true);

..... }

0
додано

спробуйте це це може допомогти для вашої кнопки asp



    <script>
        function ValidationCode()
        {
            //Code of validtion
            event.preventDefault();
            if(true)
            {
                __dopostback:("btnSubmit","");
            }
        }
    </script>
0
додано
Ви отримали своє рішення?
додано Автор Manish, джерело
Ви можете надати зразок коду дескриптону?
додано Автор Manish, джерело
спробуйте мій оновлений код
додано Автор Manish, джерело
Так, це працює вперше. він додає _doPostBack() в кнопку onclick атрибут. тому, коли я натискаю другий раз на одній кнопці після першої успішної вставки, вона не перевіряє мої елементи керування формою, як це відбувається в першому дзвінку. перевірка нульової, електронної пошти, підтвердження номера телефону тощо в функції jquery, яку я дзвоню, коли натискається кнопка.
додано Автор Chirag, джерело
Ні, будь ласка, поділіться, якщо у вас є
додано Автор Chirag, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug