javascript ротатор ссылок, строк - помогите

Тема в разделе "Другие языки", создана пользователем holms, 30 мар 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. holms

    holms

    Регистр.:
    4 июл 2006
    Сообщения:
    271
    Симпатии:
    71
    Проблема такая, есть хтмл документ в нем нужно при каждом обращении выводить рандомно строки из файла который лежит удаленно и доступен через веб.
    то есть обратились к скрипту он вывел рандомно 50 строк, еще раз обратились он опять рандомно взял строки..
    я какбы не програмист, задача хотя простая но перерыл все мануалы так и не нашел как заставить скрипт ходить по сылке и брать там строки, строк очень много и все их вбивать в скрипт нереально.
    строки из себя представляю готовые сылки с анкорами.
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    например с jquery через ajax читать файл, разделять по строкам в массив, взять случайные элементы массива и вывести на страницу
    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script language="JavaScript" type="text/javascript">
    //загрузка данных в id="data"
    $(document).ready(function(){
        var max_lines = 50;    
        var data_html = "";
        $.get('data.txt', function(data) {
            var line = data.split("\r\n");
            if(line.length<max_lines)max_lines=line.length;
            line_index = array_rand(line, max_lines);
            for (i in line_index) {
                data_html += line[line_index[i]]+'<br />';
            }
            $("#data").html(data_html);
        });
        
        function array_rand ( input, num_req ) {
            // http://kevin.vanzonneveld.net
            // +   original by: Waldo Malqui Silva
            // *     example 1: array_rand( ['Kevin'], 1 );
            // *     returns 1: 0
        
            var indexes = [];
            var ticks = num_req || 1;
            var checkDuplicate = function ( input, value ) {
                var exist = false, index = 0;
                while ( index < input.length ) {
                    if ( input [ index ] === value ) {
                        exist = true;
                        break;
                    }
                    index++;
                }
                return exist;
            };
        
            if ( input instanceof Array && ticks <= input.length ) {
                while ( true ) {
                    var rand = Math.floor( ( Math.random( ) * input.length ) );
                    if ( indexes.length === ticks ) { break; }
                    if ( !checkDuplicate( indexes, rand ) ) { indexes.push( rand ); }
                }
            } else {
                indexes = null;
            }
        
            return ( ( ticks == 1 ) ? indexes.join( ) : indexes );
        }
        
        
        
        
    });    
    </script>
    
    
    <title>JQuery</title>
    </head>
    
    <body>
    
    <div id="data"></div>
    
    </body>
    </html>
    
    
    если файл огромный то качать будет долго, тогда лучше взять случайные строки из текста с php , к которому будет запрос с аякса

    PHP:
    <?
    //не кешировать в браузере на всякий случай
    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); // always modified
    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header ("Pragma: no-cache"); // HTTP/1.0

    header('Content-Type: text/plain; charset=utf-8');
    header('Accept-Ranges: bytes');


    $keys=file('data.txt');
    $count_key=50;
    $key_rand=array_rand($keys,$count_key); 
    $str="";
    for(
    $i=1;$i<$count_key;$i++)
        {
            
    $str.=$keys[$key_rand[$i]].'<br />';
        }
    echo 
    $str
    ?>
     

    Вложения:

    holms нравится это.
  3. holms

    holms

    Регистр.:
    4 июл 2006
    Сообщения:
    271
    Симпатии:
    71
    Спасибо polyetilen :ay:
    Скрипт работает я проверли список строк (ссылок) выдает как надо, только вот просматриваю хтмл код, ссылок в нем нет, можно какнубудь сделать чтобы сылки прямо вставлялись в тело документа а не подгружались.
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    чтоб сразу в странице появлялись, это может лучше с php всю страницу генерировать с ссылками рандомными, а с javascript никак, он запускается только после загрузки страницы

    php скрипт это всё и делает, только добавить html код страницы
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Страница</title>
    </head>

    <body>
    <?
    $keys=file('data.txt');
    $count_key=50;
    $key_rand=array_rand($keys,$count_key); 
    $str="";
    for($i=1;$i<$count_key;$i++)
        {
            $str.=$keys[$key_rand[$i]].'<br />';
        }
    echo $str;
    ?>
    </body>
    </html>
    ещё по теме

    https://www.nulled.cc/showthread.php?t=161393
     
    Alex777 и holms нравится это.
  5. holms

    holms

    Регистр.:
    4 июл 2006
    Сообщения:
    271
    Симпатии:
    71
    ок понятно про javascript, буду пробовать с php
     
Статус темы:
Закрыта.