۲ علیرضا پورهادی
ارسال زیاد درخواست از طریق ajax در حالت onzoomend
جامعه پی اچ پی ایجاد شده در ۱۷ خرداد ۱۴۰۰

با سلام،

 

برای پیاده سازی نمایش تمام موقعیتهای ثبت شده بر روی نقشه، وقتی که از رخداد 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();
            });
        }
    });
}

 

 

سلام و احترام

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

امیر صالحی ۱۷ خرداد ۱۴۰۰، ۱۹:۲۲

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

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

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

امیر صالحی ۱۸ خرداد ۱۴۰۰، ۱۸:۱۵