JQuery: выводим случайную строку из файла с заданной вероятностью
Например, при заданной вероятности 50% случайная строка будет выведена примерно при половине запусков скрипта, а в остальных случаях предназначенный для вывода строки элемент HTML останется пустым.
При этом нужно, чтобы имени текстового файла с данными и вероятности появления случайной строки не было видно из исходника страницы, то есть, эту часть можно реализовать, например, на PHP или другом серверном языке.
Предполагается, что к файлу HTML подключён JQuery и код выполняется на локальном или удалённом сервере.
Вот такой порядок действий подойдёт для этой задачи.
1. Создаём в разметке HTML элемент, куда будет выводиться строка, например:
<p id="myElement"></p>
2. По нужному событию или из нужной функции Javascript вызываем эту функцию:
function loadRandomString() { $('#myElement').load ('random.php', function (response, status, xhr) { if (status == "error") { var msg = "Error: "; $("#myElement").html( msg + xhr.status + " " + xhr.statusText); } }); }
После отладки скрипта функцию можно упростить до вида
$('#myElement').load ('random.php', function (response, status, xhr) { if (status == "error") { $("#myElement").html(" "); } });
Здесь при ошибке в myElement
просто пишется неразрывный пробел
("совсем пустую" строку не нужно, чтобы элемент HTML, куда выводятся данные, не "пропадал" визуально).
3. В текущей папке (можно, конечно, и в другой) есть файл random.php
, который читает текстовый файл на сервере и выбирает оттуда случайную строчку, в простейшем случае так:
<?php $prob = 0.50; $number = mt_rand() / mt_getrandmax(); if ($number > $prob) { echo ' '; exit; } $filename = 'text.txt'; $data = @file ($filename); if ($data === FALSE) { echo 'File reading error'; exit; } echo $data[array_rand($data)]; ?>
Настройка $prob
отвечает за вероятность, с которой будет возвращена строка, её значение должно принадлежать интервалу значений ]0;1[
Следует понимать, что для файлов с большим количеством строк такой подход не годится, их можно, конечно, читать построчно, но это чревато нагрузкой на сервер, так что лучше использовать для хранения данных базу MySQLi.
4. Кладём в ту же папку файл text.txt
с абсурдными и устрашающими короткими фразами, которые будут время от времени появляться :) Фразы пишем или вставляем по одной в строке.
Вот сборка скрипта для работы на локальном или удалённом хосте, все файлы в архиве - в кодировке Юникода UTF-8.
Скачать этот скрипт в архиве .zip, папка уже создана внутри архива (18 Кб)
06.06.2019, 22:06 [2182 просмотра]