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

HTML+CSS+JavaScript

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

 

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

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

тема: Непонятка с выводам двух сообщений подряд
 
 автор: Владимир55   (01.11.2009 в 22:19)   письмо автору
 
 

В файле n_text_vse.txt записано число 1000, а в файле n_text_prin.txt записано число 75077

Исполянется код:
<?php 
echo <<<TEXT
<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax()
{
$.get("n_text_vse.txt", function(data)
{
$('#res').html("223 " + data);
var t=setTimeout("to_ajax()",10000);
});
}

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

</script>

<br>=5=<br>

<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax()
{
$.get("n_text_prin.txt", function(data)
{
$('#res').html("244 " + data);
var t=setTimeout("to_ajax()",10000);
});
}

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

</script>

TEXT;


На дисплее получаю:
244 75077

=5=

... 


Почему же так?

  Ответить  
 
 автор: АЯ   (01.11.2009 в 23:50)   письмо автору
 
   для: Владимир55   (01.11.2009 в 22:19)
 

Функцию to_ajax() вы определили дважды.
Соответственно, первый вариант этой функции вторым вариантом уничтожен.
Доступа к файлу n_text_vse.txt у вас никогда не будет.

Что до вывода результата из второго файла, то всё в точности как вы и запланировали вашим кодом.
А что вы хотели получить на дисплее?

  Ответить  
 
 автор: Владимир55   (01.11.2009 в 23:59)   письмо автору
 
   для: АЯ   (01.11.2009 в 23:50)
 

Я хотел бы получить:

1000
75077

Как конретно этого достичь? Вот на данном примере?

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 07:32)   письмо автору
 
   для: Владимир55   (01.11.2009 в 23:59)
 

вторую функцию переименовать

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

А эту операцию
<script src="jquery.min.js"></script> 
повторять надо?

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 10:14)   письмо автору
 
   для: Владимир55   (02.11.2009 в 10:11)
 

нет. как и $(document)


будет

$(document).ready(function(){ ajax_f1();ajax_f2();})

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 10:31)   письмо автору
 
   для: AlexSol   (02.11.2009 в 10:14)
 

Что-то не получилось... Он такой капризный, этот яакс...

Можете Вы для примера вставить полные изменения в код, что бы я это понял на все будущие случаи жизни:

<?php  
echo <<<TEXT 
<div id="res"> ... </div
<
script src="jquery.min.js"></script> 
<script> 
function to_ajax() 

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

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


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

</script> 

<br>=5=<br> 

<div id="res"> ... </div> 
<script src="jquery.min.js"></script> 
<script> 
function to_ajax() 

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

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


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

</script> 

TEXT; 

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 10:41)   письмо автору
 
   для: Владимир55   (02.11.2009 в 10:31)
 


<?php   
echo <<<TEXT  
<div id="res"> ... </div>  
<
script src="jquery.min.js"></script>  
<script>  
function to_ajax(arg)  
{  
$.get(arg, function(data)  
{  
$('#res').append(">  " + data+"<br>");  
var t=setTimeout(function() {to_ajax(arg)}",10000);  
});  
}  

$(document).ready(function(){  
to_ajax('111.txt')  
to_ajax('222.txt')  
});  

</script>  

<br>=5=<br>  
</script>  

TEXT;  

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 10:52)   письмо автору
 
   для: AlexSol   (02.11.2009 в 10:41)
 

Не работает. Вот что на экране:
... 

=5=

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 12:39)   письмо автору
 
   для: Владимир55   (02.11.2009 в 10:52)
 

Перебрал сто вариантов - ничего не работает!

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 12:46)   письмо автору
 
   для: Владимир55   (02.11.2009 в 12:39)
 

<script>   
function to_ajax(arg)   
{   
$.get(arg, function(data)   
{   
$('#res').append(">  " + data+"<br>");   
var t=setTimeout(function() {to_ajax(arg)},10000);   
});   
}   

$(document).ready(function(){   
                
to_ajax('111.txt')   
to_ajax('222.txt')   
});   

</script>   

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 12:52)   письмо автору
 
   для: AlexSol   (02.11.2009 в 12:46)
 

Полный код с учетом этой корректировки получился такой:
<?php

echo <<<TEXT
<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax(arg)
{
$.get(arg, function(data)
{
$('#res').append(">  " + data+"<br>");
var t=setTimeout(function() {to_ajax(arg)},10000);
});
}

$(document).ready(function(){

to_ajax('111.txt')
to_ajax('222.txt')
});

</script>

<br>=5=<br>
</script>

TEXT;


В первом файле число 111, во втором число 222.

Строки плодятся каждые 10 секунд:
... > 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111
> 222
> 111


=5=

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

>Строки плодятся каждые 10 секунд:

там так и задано.

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 13:10)   письмо автору
 
   для: AlexSol   (02.11.2009 в 13:04)
 

Когда я делал вывод содержимого только одного файла, то записи шли одна сменяя другую. То есть, на экране всегда была только одна запись.

То же самое нужно и при выводе из двух файлов: две записи одна под другой, обновляющиеся каждые 10 секунд.

Это возможно?

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 13:17)   письмо автору
 
   для: Владимир55   (02.11.2009 в 13:10)
 

<script>    
function to_ajax(arg)    
{    
$.get(arg+".txt", function(data)    
{    
$('#res'+arg).html(">  " + data);    
var t=setTimeout(function() {to_ajax(arg)},10000);    
});    
}    

$(document).ready(function(){    
                 
to_ajax('111')    
to_ajax('222')    
});    

</script>    
<span id="res111">@1</span><span id="res222">@2</span>

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 13:31)   письмо автору
 
   для: AlexSol   (02.11.2009 в 13:17)
 

Почти нормально:

... 
> 111> 222


Только три точки сверху лезут. Их можно убрать?

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 13:36)   письмо автору
 
   для: Владимир55   (02.11.2009 в 13:31)
 

посмотрите ваш код и уберите

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 13:43)   письмо автору
 
   для: AlexSol   (02.11.2009 в 13:36)
 

Вообще-то я и их и сам убрал, но подумал, что, может быть, троеточие имеет какое-то принциапиальное значение, и потому решил Вас об этом спросить.

Теперь все работает как надо, и я Вам за это благодарен!

Реально мне требуется не два вывода, а больше, но созданный Вами код легко допускает наращивание, и я это уже попробовал.

Так что всё хорошо.

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

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 13:49)   письмо автору
 
   для: Владимир55   (02.11.2009 в 13:43)
 

хз. вы не привели код

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 13:57)   письмо автору
 
   для: AlexSol   (02.11.2009 в 13:49)
 

Я имею в виду Вашу рекомендацию от 02.11.2009 в 07:32

При ее осуществлении получилось вот что:
<?php

echo <<<TEXT
<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax()
{
$.get("111.txt", function(data)
{
$('#res').html("1-  " + data);
var t=setTimeout("to_ajax()",10000);
});
}

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

</script>

<br>=5=<br>

<div id="res"> ... </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax2()
{
$.get("222.txt", function(data2)
{
$('#res').html("2- " + data2);
var t=setTimeout("to_ajax2()",10000);
});
}

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

</script>

TEXT;


И выводится
1- 111

=5=

... 
То есть, работает только первый вывод.

Почему второй отказал?

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

2 раза подключается скрипт
2 раза событие $(document).ready({}) их надо объединить, я писал выше.
$('#res').html -- оба раза данные пишутся в один и тот же блок, затирая друг друга

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 14:33)   письмо автору
 
   для: AlexSol   (02.11.2009 в 14:10)
 

Существо дела ничаниает проступать... Спасибо!

А как совместно с Вашим универсальным кодом использовать пару кодов запуска внешних скриптов? Проблема схожа - опять конфликты с функцией ajax! Здесь и вывод перестал работать, и запуск не работает.

Как оживить такой код:
<?php

echo <<<TEXT
<div id="res"> </div>
<script src="jquery.min.js"></script>
<script>
function to_ajax(arg)
{
$.get(arg+".txt", function(data)
{
$('#res'+arg).html(">  " + data);
var t=setTimeout(function() {to_ajax(arg)},10000);
});
}

$(document).ready(function(){

to_ajax('111')
to_ajax('222')
to_ajax('333')
});

</script>
<span id="res111">@1</span><span id="res222">@2</span><span id="res333">@3</span>


<br>
<br>

<script>
function to_ajax()
{
$.get("31.php");
}
</script>
<input type="button" onclick="to_ajax()" value="Пуск-1" />

<br>
<br>

<script>
function to_ajax()
{
$.get("32.php");
}
</script>
<input type="button" onclick="to_ajax()" value="Пуск-2" />

TEXT;

  Ответить  
 
 автор: AlexSol   (02.11.2009 в 14:46)   письмо автору
 
   для: Владимир55   (02.11.2009 в 14:33)
 

у вас в php все переменные имеют имена $VAR, массивы $ARRAY и функции FUNC(){} ?

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 14:52)   письмо автору
 
   для: AlexSol   (02.11.2009 в 14:46)
 

Нет, в php я стараюсь обеспечить разнообразие и для этого даже веду реестр имен переменных при создании каждого скрипта. Нюанс в том, что php меня понимает, а аякс отказывается работать, как только я изменю хоть что-нибудь. Вот по этому приходится спрашивать у Вас и учиться у Вас практическому применнияю.

Может быть Вы подскажете, как оживить этот код?

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

вторая часть

<script>
function starter(file)
{
$.get(file+".php");
}
</script>
<input type="button" onclick="starter(1)" value="Пуск-1" />

<input type="button" onclick="starter(2)" value="Пуск-2" />

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 15:01)   письмо автору
 
   для: AlexSol   (02.11.2009 в 14:55)
 

А куда же подевались имена файлов, которые следует вызвать (31.php, 32.php)? Или имелось в виду, что запускаются файл с именами 1 и 2?

  Ответить  
 
 автор: Владимир55   (02.11.2009 в 15:06)   письмо автору
 
   для: Владимир55   (02.11.2009 в 15:01)
 

Все работает!

Замечательный урок!

Спасибо!

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

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