اذهب إلى المحتوى

السؤال

نشر

مرحبا,

لدي زر بعد الضغط عليه يرسل بيانات للكونترولر حتى يتم حفظها في قاعدة البيانات عن طريق ajax,

لكن المشكلة انه لو كان الموقع بطيئ و ضغطت أكثر من مرة على الزر يتم ارسال البيانات و حفظها اكثر من مرة و هذا مايسبب لي مشاكل,

كيف بامكاني المنع من ارسال request اكثر من مرة اي ينتظر حتى يتم الحفظ و اقوم باسترجاع الرد من ثم يقوم بارسال request آاخر؟

هذه صورة لما يحدث:

6101d01b0b959_Screenshotfrom2021-07-2822-45-38.png.6940e0858d1fc90bb5f30db1e4139cd7.png

Recommended Posts

  • 1
نشر

يمكنك وضع متغير بولياني تتغير قيمته مثلا من true إلى false بعد النقر على الزر، و حتى إسترجاع الطلب تعود على ماكانت عليه وستضع شرطا في اول جزء معالجة الطلب يختبر المتغير إن كان false يعمل return مباشرة. ويمكن وضع مؤقت زمني يضمن حصول تأخير بعد وصول الطلبية و الأفضل هنا عرض إشعار بنجاح إضافة البيانات، يفضل دمج الخاصتين سويا.و يمكنك ايضا إبطال الزر بعمل disable له حتى إكتمال الطلبية.

getElementById("Button"). disabled = true

  • 0
نشر

إذا كنت تستخدم مكتبة Jquery يمكنك إستخدام الطريقة التالية:

function  saveData(){
  $("#button").prop('disabled', true);  // عند الضغط على الزر لأول مرة نقوم بتعطيل الزر
  $.ajax({
            type: "post",
            url: "{{ url('route_name') }}",
            dataType: "json",
            data: $('#ajax').serialize(),
            success: function(data){
              
                  $("#button").prop('disabled', false); // ثم نقوم بتفعيل الزر مجددا عند الحصول على الإجابة
            },
            error: function(data){
                 alert("Error")
            }
        });
    });
  
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...