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

Статус
В этой теме нельзя размещать новые ответы.

holms

Гуру форума
Регистрация
4 Июл 2006
Сообщения
271
Реакции
74
Проблема такая, есть хтмл документ в нем нужно при каждом обращении выводить рандомно строки из файла который лежит удаленно и доступен через веб.
то есть обратились к скрипту он вывел рандомно 50 строк, еще раз обратились он опять рандомно взял строки..
я какбы не програмист, задача хотя простая но перерыл все мануалы так и не нашел как заставить скрипт ходить по сылке и брать там строки, строк очень много и все их вбивать в скрипт нереально.
строки из себя представляю готовые сылки с анкорами.
 
например с 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; 
?>
 

Вложения

  • ajax_read_random_lines_from_text_file.zip
    1,3 KB · Просмотры: 5
  • ajax_read_random_lines_from_php.zip
    1,3 KB · Просмотры: 4
Спасибо polyetilen :ay:
Скрипт работает я проверли список строк (ссылок) выдает как надо, только вот просматриваю хтмл код, ссылок в нем нет, можно какнубудь сделать чтобы сылки прямо вставлялись в тело документа а не подгружались.
 
чтоб сразу в странице появлялись, это может лучше с 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>
ещё по теме
 
ок понятно про javascript, буду пробовать с php
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху