Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery скролл и ajax реквест (https://javascript.ru/forum/jquery/7904-jquery-skroll-i-ajax-rekvest.html)

Nikitos 25.02.2010 12:06

jquery скролл и ajax реквест
 
Добрый день товарищи! Есть страничка на которой распологается div, внутрь которого подгружаю содержимое ЛОГА через аякс (innerHTML). Так же в этом же диве применяю аналог скролла от jquery. Все работает отменно! но одно но, при подгрузке содержимого, скролл (jquery) как бы это сказать... величает не верное кол-во строк, а точнее кол-во строк предыдущего варианта контента дива.

собсно вот код: // Данный скрипт отвечает за подгрузку, и находится у меня в отдельном файле
// ################################################################################################################## //
// PAGE SHEET SCRIPT
// ################################################################################################################## //
/* ------------------------------------------------------------------------------------------------------------------ */
function LoadContent(PageLink, ContainerId)
{
    var Container = document.getElementById(ContainerId);
    var LoadDummy = document.getElementById('load_dummy'); // div c надписью 'Загрузка...'
    Container.innerHTML = LoadDummy.innerHTML;
    var http = CreateRequestObject();
    if(http)
    {
        http.open('post', PageLink);
        http.onreadystatechange = function()
        {
            if(http.readyState == 4)
                Container.innerHTML = http.responseText;
        }
        http.send(null);
    }else{
        document.location = web_link;
    }
}
/* ------------------------------------------------------------------------------------------------------------------ */
function CreateRequestObject()
{
    try
    {
        return new XMLHttpRequest()
    }
    catch(e)
    {
        try
        {
            return new ActiveXObject('Msxml2.XMLHTTP')
        }
        catch(e)
        {
            try
            {
                return new ActiveXObject('Microsoft.XMLHTTP')
            }
            catch(e)
            {
                return null;
            }
        }
    }
} 
// ------------------------------------------------------------------------------------------------------------------ //

А вот этим скриптом делаю запрос на подгрузку:
// ################################################################################################################## //
// ADMP SHEET SCRIPT
// ################################################################################################################## //
var admp_opened = 0;
var admp_log_opened = 0;
// ################################################################################################################## //
function OpenLog(LogName, ReadData, Type){
    
    if (LogName)
        admp_log_opened = LogName;
    else
        LogName = admp_log_opened;

    Category = 0;
    Data = 0;

    if(ReadData){
        var admin_filter_find_list_handle = document.getElementById('admin_filter_find_list');
        var admin_argument_line_handle = document.getElementById('admin_filter_find_line');
        Category = admin_filter_find_list_handle.value;
        Data = admin_argument_line_handle.value;
    }
    // TEST BLOCK
    if (Type == 1)Type = 'find';
    if (Type == 2)Type = 'filter';
    // TEST BLOCK
    
    switch(LogName){
        case 1:
            LoadContent('mydevlog.php?log=personal&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
        case 2:
            LoadContent('mydevlog.php?log=admin&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
        case 3:
            LoadContent('mydevlog.php?log=user&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
    }

    $(function()
    {
        $('#admp_logarea').jScrollPane({
            showArrows:false,
            scrollbarWidth: 10,
            arrowSize: 0
        });
    });
}
// ------------------------------------------------------------------------------------------------------------------ //
function ShowADMPWindow(){
    if(!admp_opened){
        var admp_window_handle = document.getElementById('admp_window');

        admp_window_handle.style.opacity = 0;
        admp_window_handle.style.display = 'block';

        for (var alpha = 0; alpha <= 10; alpha++){
            setTimeout('AlphaSet('+alpha+')', 10*alpha);
        }
        admp_opened = 1;
        
        $(function()
        {
            $('#admp_logarea').jScrollPane({
                showArrows:false,
                scrollbarWidth: 10,
                arrowSize: 0
            });
        });
    }
}
// ------------------------------------------------------------------------------------------------------------------ //
function HideADMPWindow(){
    var admp_window_handle = document.getElementById('admp_window');
    admp_window_handle.style.display = 'none';
    admp_opened = 0;
}
// ------------------------------------------------------------------------------------------------------------------ //
function AlphaSet(AlphaValue) {
    var admp_window_handle = document.getElementById('admp_window');
    admp_window_handle.style.opacity = AlphaValue/10;
}
// ------------------------------------------------------------------------------------------------------------------ //


при открытии странички происходит следующее:
$(function()
                {
                    $('#admp_logarea').jScrollPane({
                        showArrows:false,
                        scrollbarWidth: 10,
                        arrowSize: 0
                    });
                    var admp_window_handle = document.getElementById('admp_window');
                    admp_window_handle.style.display = 'none';
                    OpenLog(1,0,0);
                });


При работе с логом вызываю OpenLog(*,*,*) с параметрами. В общем вот такая ерунда. Помогите ктонить, я чувствую что ответ прост, но голова просто уже опухает. Кому не сложно.... ай нид хелп :help:

Вот скрин чтоб понятнее как бы было


Да и еще один нюансик, при первой загрузке (которая происходить из тела странички (не при нажатии на кнопочку)) все норм! показывает нужное кол-во строк с пропорциональным скроллом. Прямо незнаю что делать, буквально бьюс головой о настольную лампу.

Nikitos 25.02.2010 15:00

Вопрос решен! сделал вот так:

function OpenLog(LogName, ReadData, Type){
    
    if (LogName)
        admp_log_opened = LogName;
    else
        LogName = admp_log_opened;

    Category = 0;
    Data = 0;

    if(ReadData){
        var admin_filter_find_list_handle = document.getElementById('admin_filter_find_list');
        var admin_argument_line_handle = document.getElementById('admin_filter_find_line');
        Category = admin_filter_find_list_handle.value;
        Data = admin_argument_line_handle.value;
    }
    // TEST BLOCK
    if (Type == 1)Type = 'find';
    if (Type == 2)Type = 'filter';
    // TEST BLOCK
    
    switch(LogName){
        case 1:
            LoadContent('mydevlog.php?log=personal&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
        case 2:
            LoadContent('mydevlog.php?log=admin&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
        case 3:
            LoadContent('mydevlog.php?log=user&cat='+Category+'&data='+Data+'&type='+Type, 'admp_logarea');
            break;
    }
    setTimeout('RedrawScroll()', 10);
}

в то время как:
function RedrawScroll()
{
    $(function()
    {
        $('#admp_logarea').jScrollPane({
            showArrows:false,
            scrollbarWidth: 10,
            arrowSize: 0
        });
    });
}

Таким образом все норм прорисовывается :) Спасибо за помощь!
З.Ы. -Самое удивительное, простой вызов RedrawScroll() не дает такого результата, только если через задержку, при том любой длины, будь то хоть 1 милисекунда. Сырость какая то :) (по времени).


Часовой пояс GMT +3, время: 14:09.