ارسال زیاد درخواست از طریق ajax در حالت onzoomend

پرسیده شده
فعالیت 1054 روز پیش
دیده شده 327 بار
0

با سلام،

 

برای پیاده سازی نمایش تمام موقعیتهای ثبت شده بر روی نقشه، وقتی که از رخداد moveend بر روی نقشه استفاده میشه، ظاهرا یک بار درخواست ajax به سرور ارسال میشه و موقعیتهای ثبت شده بدرستی نمایش داده میشود. ولی وقتی از رخداد zoomend استفاده میشه و کاربر زوم میکنه، ظاهرا درخواست ajax بارها ارسال میشه و مرورگر هنگ میکنه. برای رفع این مشکل چکار باید کرد؟

getAllLocations(); // When the page is loaded.

map.on('moveend', function() { // When the page is moved.
    getAllLocations();
});

map.on('zoomend', function() { // When the page is zoomed in or out
    getAllLocations();
});

function getAllLocations() {
    var northLine = map.getBounds().getNorth();
    var westLine = map.getBounds().getWest();
    var southLine = map.getBounds().getSouth();
    var eastLine = map.getBounds().getEast();
    $.ajax({
        url: 'process/searchAll.php',
        type: 'POST',
        data: {
            nl: northLine,
            sl: southLine,
            el: eastLine,
            wl: westLine
        },
        success: function(r) {
            var myArr = JSON.parse(r);
            $.each(myArr, function(index, val) {
                L.marker([val.lat, val.lng]).addTo(map).bindPopup(val.title).openPopup();
            });
        }
    });
}

 

 

فایل پیوست

علیرضا پورهادی
علیرضا پورهادی

17 خرداد 00

0
حذف شده

سلام و احترام

به جای درخواست ajax یک console.log بزارید و ببنیید با هر بار zoom کردن چند بار اجرا میشه و نتیجه رو اعلام کنید

فایل پیوست

امیر صالحی

توسط

امیر صالحی

17 خرداد 00

حذف شده
سلام دوباره ممنونم از راهنماییتون آقای صالحی. console.log رو که اجرا کردم، مشکلی وجود نداشت. با هر زوم کردن، فقط یک بار دستور اجرا میشد. این نشون میده مشکل از جای دیگریست!!!
علیرضا پورهادی

18 خرداد 00

0
حذف شده

کد رو به این شکل اجرا کردید؟

map.on('zoomend', function() { // When the page is zoomed in or out
    console.log('test');
});

جای این یه تیکه کد console.log رو قرار بدید و زوم کنید ببنید چند بار اجرا میشه، آیا هر بار زوم تموم میشه اجرا میشه

فایل پیوست

امیر صالحی

توسط

امیر صالحی

18 خرداد 00

حذف شده
بله، به همین صورت اجرا کردم. مشکلی نداشت. بعد از پایان زوم شدن، کد اجرا میشد.
علیرضا پورهادی

19 خرداد 00

حذف شده
یه بار محتویات داخل تابع رو مسقیم داخل zoomend قرار بدید و نتیجه رو اعلام کنید
امیر صالحی

19 خرداد 00