2015-05-12 4 views
-1

ПытаюсьОдин запрос Ajax в момент

$.ajax({ 
    // ..., 
    async: false, 
}); 

, но это не помогает. Существует способ с флагом (true/false), но, возможно, есть более красивый способ, как я могу это сделать?

$(window).scroll(function() { 
    if ($(window).scrollTop() + $(window).height() > $(document).height() - 220) { 
     // .. 
     sendRequest(); 
     // .. 
    } 
}); 

Эта функция выполняет запрос AJAX.

+0

показать нам код, где вы называете ajax несколько раз – Hazaart

+2

Что именно вы пытаетесь сделать. Вам нужно предоставить более подробную информацию о том, как выглядит ваш код, что вы ожидаете, и что на самом деле происходит. – scrappedcola

+0

@Hazaart, посмотрите сейчас –

ответ

0

В нашем приложении мы добавляем ajax-запросы в очередь, а затем выкладываем их и выполняем их по одному. Вот очень упрощенная версия ...

var queue = []; 

function queueAdd(options) { 

    // ADD AJAX OPTIONS TO QUEUE ARRAY 
    queue.push(options); 

    // START QUEUE RUNNING 
    queueRun(); 
} 

function queueRun() { 

    // QUEUE EMPTY OR REQUEST ALREADY ACTIVE 
    if (!queue.length || activeRequest) return; 

    // REMOVE FIRST REQUEST FROM QUEUE 
    var request = queue.shift(); 

    // ATTACH COMPLETE CALLBACK 
    request.complete = function(data) { 

     // ACTIVE REQUEST COMPLETED 
     activeRequest = false; 

     // START NEXT REQUEST IN QUEUE 
     queueRun(); 

     // OPTIONALLY EXECUTE ORIGINAL COMPLETE CALLBACK 
     request.complete(data); 
    }; 

    // PREVENT CONCURRENT REQUESTS 
    activeRequest = true; 

    // EXECUTE AJAX REQUEST 
    $.ajax(request); 

} 
Смежные вопросы