Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вывести в браузер информацию из текстового файла?
 
 автор: Владимир55   (29.10.2009 в 13:01)   письмо автору
 
 

рнр скрипт в процессе своей работы не выводит информацию в браузер (нет в этом нужды), но записывает количество проделанных итераций в текстовый файл n.txt

Как вывести информацию из этого файла в специально созданную контрольную html страницу, существующую независимо от упомянутого скрипта? Что бы раз в 2-3 секунды на мониторе появлялось это число?
(не столбец чисел, а одно число).

=========
Желательно обойтись без рнр. Лучше всего был бы JS на клиентской машине.

  Ответить  
 
 автор: AlexSol   (29.10.2009 в 13:47)   письмо автору
 
   для: Владимир55   (29.10.2009 в 13:01)
 

попробуйте точно также через $get() как в самом первом примере

  Ответить  
 
 автор: Владимир55   (29.10.2009 в 14:08)   письмо автору
 
   для: AlexSol   (29.10.2009 в 13:47)
 

Здесь немного другое, и ajax здесь уже не к месту. Здесь нужен JS скрипт, который с периодом в 2 секунды САМ будет считывать текстовый файл и отдавать информацию браузеру.

  Ответить  
 
 автор: AlexSol   (29.10.2009 в 14:30)   письмо автору
 
   для: Владимир55   (29.10.2009 в 14:08)
 

к месту, к месту.


$.get("test.txt", function(data){
alert("Data Loaded: " + data);
});

  Ответить  
 
 автор: coloboc66   (29.10.2009 в 14:43)   письмо автору
 
   для: AlexSol   (29.10.2009 в 14:30)
 

Правильно. А аякс можно вызывать с помощью setInterval()

  Ответить  
 
 автор: Владимир55   (29.10.2009 в 18:44)   письмо автору
 
   для: coloboc66   (29.10.2009 в 14:43)
 

<body>
<script src="jquery.min.js"></script>
<script> 
function to_ajax() 

$.get("test.txt", function(data)
    {
alert("Data Loaded: " + data);
    });

</script>

Хотя файл test.txt существует и в нем есть запись, на экран ничего не выводится.

Кстати, в этом случае требуется ли кодировка UTF-8 ?
(я попробовал и с UTF-8, и с ANSI).

  Ответить  
 
 автор: AlexSol   (29.10.2009 в 19:32)   письмо автору
 
   для: Владимир55   (29.10.2009 в 18:44)
 

вызвать функцию не забыли?

  Ответить  
 
 автор: Владимир55   (29.10.2009 в 21:21)   письмо автору
 
   для: AlexSol   (29.10.2009 в 19:32)
 

Тот код, что написан - это всё, что есть на странце. Надо ещё что-то?
Мне очень трудно в этом разобраться.

  Ответить  
 
 автор: AlexSol   (29.10.2009 в 21:56)   письмо автору
 
   для: Владимир55   (29.10.2009 в 21:21)
 

ну да. функция есть а ее вызова нету.

можно так

<body>
<script src="jquery.min.js"></script>
<script>
function to_ajax()
{
$.get("test.txt", function(data)
{
alert("Data Loaded: " + data);
});
}

$(document).ready(function(){
to_ajax()
});

</script>

$(document).ready() равносильно body.onLoad()

  Ответить  
 
 автор: Владимир55   (29.10.2009 в 22:08)   письмо автору
 
   для: AlexSol   (29.10.2009 в 21:56)
 

Так текстовый файл прочитать удалось. При этом в результат виден в маленьком окошке и обновляется после сброса и ручного обновления страницы.

И это уже неплохо.

Но хотелось бы чуть другого: чтобы эта информация выводилась автоматически с периодом в пару секунд.

Как этого достичь?

  Ответить  
 
 автор: AlexSol   (29.10.2009 в 23:23)   письмо автору
 
   для: Владимир55   (29.10.2009 в 22:08)
 

<body>
<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax()
{
$.get("test.txt", function(data)
{
$('#res').html("Data Loaded: " + data);
setTimeOut(to_ajax, 10000)
});
}

$(document).ready(function(){
to_ajax()
});

</script>

  Ответить  
 
 автор: Владимир55   (29.10.2009 в 23:58)   письмо автору
 
   для: AlexSol   (29.10.2009 в 23:23)
 

Числа выводятся нормально. Если текстовой файл сделать в уникоде, то даже кириллица правильно выводится.

В общем, всё бы хорошо, да одно нехорошо: периодического обновления информации в браузере не происходит.

Как я понимаю, здесь заложен период обновления в 10 секунд. Вручную менял содержимое текстового файла и ждал минуту - информация не обновляется.

Пробовал ИЕ и ФФ.

===============
На странице есть сообщение об ошибке кода:

Сведения об ошибке на веб-странице

Сообщение: Предполагается наличие объекта
Строка: 17
Символ: 1
Код: 0
URI-код: http://sin/31.htm


Строка 17 содержит запись:
setTimeOut(to_ajax, 10000)

  Ответить  
 
 автор: AlexSol   (30.10.2009 в 07:25)   письмо автору
 
   для: Владимир55   (29.10.2009 в 23:58)
 

var t=setTimeout("to_ajax()",10000);

  Ответить  
 
 автор: Владимир55   (30.10.2009 в 11:51)   письмо автору
 
   для: AlexSol   (30.10.2009 в 07:25)
 

Теперь все работает просто замечательно!
Я очень давно мечтал о таком сервисе. Спасибо!


Однако заметил, что это код весьма чувствителен к написанию. Например, он перестает работать, если его переписать вот так:
<body> 
<div id="res"> ... </div>
<script src="jquery.min.js"></script> 
<script> 
function to_ajax() 

    $.get("test.txt", function(data) 
    { 
        $('#res').html("Data Loaded: " + data); 
        var t=setTimeout("to_ajax()",10000);
        }); 
    } 
    $(document).ready(function()
{
to_ajax() 
});
</script>


В чем тут секрет?

  Ответить  
 
 автор: AlexSol   (30.10.2009 в 12:18)   письмо автору
 
   для: Владимир55   (30.10.2009 в 11:51)
 

все коды чувствительны к написанию поскольку есть своя структура и лексика языка.

вы скобки переврали. не закрыли функцию to_ajax перед вызовом события $().ready()

  Ответить  
 
 автор: Владимир55   (30.10.2009 в 12:40)   письмо автору
 
   для: AlexSol   (30.10.2009 в 12:18)
 

В чем ошибка со скобками, я не понял и не нашел её.

Вот так работает:
<body> 
<div id="res"> ... </div>
<script src="jquery.min.js"></script> 
<script> 
function to_ajax() 

$.get("test.txt", function(data) 

$('#res').html("Data Loaded: " + data); 
var t=setTimeout("to_ajax()",10000);
}); 


$(document).ready(function(){
to_ajax() 
});

</script>

Здесь тоже что-то неверно?

  Ответить  
 
 автор: AlexSol   (30.10.2009 в 13:02)   письмо автору
 
   для: Владимир55   (30.10.2009 в 12:40)
 

тут верно.

в предыдущем у вас $.get() закрыт только в последней строке. там сначало надо фигурную скобку закрыть от от второго параметра -- function(){} , что у вас есть, а потом закрыть простой скобкой сам get

  Ответить  
 
 автор: Владимир55   (30.10.2009 в 13:09)   письмо автору
 
   для: AlexSol   (30.10.2009 в 13:02)
 

Спасибо ещё раз!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования