|
|
|
| Файл 1.php содержит:
<?php
print $data = '<p>Пример</p>';
// Файл записан в UTF-8
?>
|
Файл 2.php содержит:
<div id="content"></div>
<script src="jquery.min.js"></script>
<script>
$.get('1.php', function(data){
// в переменной data находится ответ от скрипта
$('#content').html(data);
});
</script>
|
При вызове файла 2.php посредством Ajax информация поступает в браузер. То есть, инициатором появления информации в браузере является файл 2.php, запускаемый с клиентской машины.
А можно ли инициатором сделать файл 1.php ?
То есть, если на файле 1.php выполняется какая-либо серверная программа (например, счетчик циклов на операторе for ($i=1; $i < 10000; $i++)), то как посредством Ajax вывести в браузер номер текущего цикла? Не в виде последовательности echo "<br> $i", а что бы каждый номер выводился на месте предыдущего? | |
|
|
|
|
 20 Кб |
|
|
для: Владимир55
(29.10.2009 в 00:34)
| | Можно. Примерная схема действия:
1. Запускаем аяксом 1.php
2. Так как подразумевается, что 1.php выполняется долго, то он время от времени записывает в текстовый файл номер итерации (например через каждые 10)
3. Запускаем аяксом 2.php
4. 2.php читает из этого файла номер итерации и отдаёт его в браузер.
Пример можно посмотреть во вложении. | |
|
|
|
|
|
|
|
для: Саня
(29.10.2009 в 00:52)
| | Спасибо, очень интересное решение!
И очень неожиданное для меня...
Как я понял, посредством аякс напрямую подкачивать информацию из запущенного 1.php в html-файл для дальнейшего отображения браузером невозможно. То есть, не "дергать" периодически 2.php, а чтобы непрерывно напрямую из 1.php в html-файл.
Это неосуществимо? | |
|
|
|
|
|
|
|
для: Владимир55
(29.10.2009 в 01:38)
| | Так нельзя. Функция, указанная вторым параметром для $.get(), получит данные только после завершения работы скрипта. В этом легко убедиться. Перепишите функцию start()
function start() {
$.get('1.php', function(data){
$('#content').text(data);
});
}
|
А в 1.php вместо file_put_content
print iconv('cp1251', 'utf-8', $message);
|
Хоть 1.php отдаёт данные порциями, в конечном итоге они вылезут все одновременно. | |
|
|
|
|
|
|
|
для: Саня
(29.10.2009 в 01:49)
| | Получается, что я не совсем верно понимал сущность аякса. Теперь буду знать. Благодаря Вам. Спасибо! | |
|
|
|