За последние 24 часа нас посетили 17850 программистов и 1291 робот. Сейчас ищут 1592 программиста ...

Вопрос по одному сайту

Тема в разделе "JavaScript и AJAX", создана пользователем mark2010, 23 фев 2011.

  1. mark2010

    mark2010 Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    80
    Симпатии:
    0
    Здравствуйте,

    Требуется сделать один сайт, основанный на mootools. Суть такая. Есть папка с картинками, которых предполагается очень много. Они все одного разрешения (800*600). На страничке есть рамка (div) в которую грузятся картинки с какой-то периодичностью.

    Я сделал следующее:

    Код (Text):
    1.  
    2. if ($_GET['mode'] == 'get_random_image')
    3. {
    4.     $dir            = $_SERVER['DOCUMENT_ROOT'] . '/images/';
    5.     $dir_pointer    =   opendir($dir);
    6.    
    7.     $count = 0;
    8.     $result_array = array();
    9.     while ($data = readdir($dir_pointer))
    10.     {
    11.         if ($data != "." && $data != "..")
    12.         {
    13.             $result_array[$count] = $data;
    14.             $count++;
    15.         }  
    16.     }
    17.    
    18.     shuffle($result_array);
    19.     $array_count_values = count($result_array);
    20.     $random_value = mt_rand(0, $array_count_values);
    21.  
    22.    
    23.     $result = array();
    24.     $result['path'] = "D:\\Server\\www\\83\\images\\";
    25.     $result['msg'] = $result_array[$random_value];
    26.     $result['result'] = true;
    27.     die(json_encode($result));
    28. }
    [js]
    function get_random_image()
    {

    options = {
    url: 'includes/ajax.php?mode=get_random_image',
    onSuccess: function (result)
    {
    if (result['result'])
    {
    var photo_html = "<img id=\"photo\" src=\"images\/"+ result['msg']+"\" alt=\"\" />";
    $('photogallery').set('html', photo_html);
    var elem = $('photo');
    var random_number = rand(0, 1);
    var directions = new Array('horizontal', 'vertical');
    var dir = directions[random_number];

    var slide_effect = new Fx.Slide(elem, {mode: dir, duration: 2000}).hide();
    slide_effect.toggle();

    }

    else
    {
    alert(result['error']);
    }
    }
    }

    new Request.JSON(options).send();
    }
    [/js]

    Функция rand определена вот так:

    [js]
    function rand( min, max ) {
    if( max ) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    } else {
    return Math.floor(Math.random() * (min + 1));
    }
    }
    [/js]

    По непонятной причине иногда идёт пропуск картинки, что совершенно недопустимо. Т.е. всё срабатывает, даже когда я алертом выводил отладочные данные, был адрес картинки. Т.е. она точно есть, но не подгружается...

    С чего бы такое поведение?...
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну может не успевает =)
    сначала грузите, потом включайте.

    т.е. включаем ту, что уже загружена, и начинаем подгружать новую. Тогда небось прокатит.
     
  3. mark2010

    mark2010 Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    80
    Симпатии:
    0
    Так у меня загрузка уже слайдом идёт... что-то я не понял, что за чем вы хотите чтобы шло...
    Или прелоад изображений сделать? А если их будет штук 500? (а так и планируется, в принципе)