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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Можно ли передать скрипт через AJAX ?

Сообщения:  [1-10]   [11-14] 

 
 автор: sim5   (13.11.2009 в 16:14)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:43)
 

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

Ваш основной JS-сценарий подключаемый к странице, уже должен иметь функцию, которая будет выводить сообщения. В $(document).ready устанавливаете таймер к обращению этой функции. Не надо ее грузить с сервера.

На мой взгляд время периода можно установить однократно, жестко его прописав, но если это так принципиально, можно получать это время и с сервера. Сам же запрос вообще может не содержать никаких параметров.

Получая ответ сервера, вы обрамляете его содержимое необходимыми тегами, и, если вам не понятно как добавлять DOM объекты в jQuery, то вставляете его в уже имеющийся HTML-элемент на странице, который и будет отображать эти ответы. Вы можете даже загружать уже в этот элемент первое из выводимых в него сообщений (стиль display: none не надо применять к нему) при выдаче страницы, а таймер + запрос сменят его на следующий и т.д..

Функция, которая будет делать запросы к серверу, может сразу же управлять и эффектом этого окна, используя эффекты jQuery, например, fade, slide и т.п.. Например, вы сперва плавно гасите окно сообщений:
$('#box').fadeOut(500);
Затем загружаете полученное (и обработанное) содержимое ответа в этот элемент, и показываете его:
$('#box').fadeIn(500);

Я уже говорил, что совсем не обязательно передавать параметры серверу в запросе, если выдачей ответа занимается отдельный скрипт на сервере, а не обрабатыващий множество запросов. И что отдавать колиенту, тоже решать на сервере. Сколько всего сообщений будет показываться у клиента должен определять сервер, в конфигурации, корторую вы устанавливаете через админ панель. Это число будет служить параметром для LIMIT в SQL запросе. Этот запрос вы можете закешировать, а по счетчику установленному в сессии, уже можете выбирать N-ую запись из этого кеша и отдавать ее клиенту. То есть, передавать некие параметры JS-сценарию клиента, для управления этим, нет никакой необходимости.

В этой теме есть прикрепление описания API jQuery. Там есть примеры всех методов ее, полезно будет ознакомиться, опробовать их работу для понимания, и использовать.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 15:43)   письмо автору
 
   для: sim5   (13.11.2009 в 15:21)
 

Это код для периодической ротации, который мне дали на этом форуме. Может, есть вариант лучше, но я таковым не распологаю.

А приведенный работает вот так: http://vova.1gb.ru/222.htm

  Ответить  
 
 автор: sim5   (13.11.2009 в 15:21)   письмо автору
 
   для: Владимир55   (13.11.2009 в 15:18)
 

А что делает сам JS-сценарий в этом примере? Я там ничего не понял.
А чтобы вывести переиодически N-сообщений, например, постоянной ротацией, то нужно действовать не так.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 15:18)   письмо автору
 
   для: sim5   (13.11.2009 в 15:12)
 

В самом первом сообщении 12.11.2009 в 19:09 имеется скрипт, который воводит два сообщения, причем вывод происходит таким образом, что одно сообщение периодически сменяется другим.

Мне нужно этот скрипт протащить на страницу через Аякс.

  Ответить  
 
 автор: sim5   (13.11.2009 в 15:12)   письмо автору
 
   для: Владимир55   (13.11.2009 в 14:55)
 

У вас сам JS сценарий, мягко выражаясь не логичный. Давайте так - какая задача преследуется при загрузке некоего JS-сценария с сервера?

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 14:55)   письмо автору
 
   для: sim5   (13.11.2009 в 00:21)
 

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

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

Я был бы очень благодарен, если бы то-то знающий написал о том, как в скрипт
<?php  
echo <<<TEXT  
<div id="content"></div>  
<
script src="jquery.min.js"></script>  
<script>  
$.get('3.php', function(data){  
  // в переменной data находится ответ от скрипта  
  $('#content').html(data);  
});  
</script>  
TEXT;   
встроить что-то, что позволило бы воспоизвети скрипт, переданный со страницы '3.php'

  Ответить  
 
 автор: sim5   (13.11.2009 в 00:21)   письмо автору
 
   для: Владимир55   (13.11.2009 в 00:09)
 

Ну если вы как строку передаете, то конечно eval. Но обязательно пропустить строку через функции, о которых сказано выше. И скрипт лучше держать не в элементе документа, типа '#content', а в самом документе. Если же это просто набор данных для встраивания в определенное место страницы, то лучше обработать данные на сервере, и передать результат работы как массив (массив объектов), который уже вывести подключаемым обычным способом скриптом, в необходимый элемент.

  Ответить  
 
 автор: Владимир55   (13.11.2009 в 00:09)   письмо автору
 
   для: sim5   (12.11.2009 в 22:53)
 

"Ну может тогда лучше загрузить обычным запросом"
Я хочу загрузить его в общем блоке неиндексируемой информации, подгружаемой через Аякс.

Может, тогда лучше обратиться к eval? Мне уже доводилось использовать эту фнукцию рнр, но как из скрипта
<?php 
echo <<<TEXT 
<div id="content"></div
<
script src="jquery.min.js"></script> 
<script> 
$.get('3.php', function(data){ 
  // в переменной data находится ответ от скрипта 
  $('#content').html(data); 
}); 
</script> 
TEXT; 
переписать информацию в переменную рнр, которая далее будет аргументом eval?

  Ответить  
 
 автор: sim5   (12.11.2009 в 22:53)   письмо автору
 
   для: Владимир55   (12.11.2009 в 22:31)
 

Ну если вы сразу не исполняете его, потому и не удалось. Вам ужно последующее обращение к функциям загружаемого скрипта? Ну может тогда лучше загрузить обычным запросом, и полученный скрипт добавить к документу, ну а затем уже использовать:
success: $(document.body).append(eval'('+data+');');
где data, возвращаемый с сервера скрипт. Код скрипта должен быть заключен в теги <script></script>, и все это обработать перед отправкой на сервер:
str_replace(array("\r", "\n", "<", ">", "&"),array('\r', '\n', '\x3c', '\x3e', '\x26'),addslashes($var))
и обрамить кавычками. $var - сам скрипт.

  Ответить  
 
 автор: Владимир55   (12.11.2009 в 22:31)   письмо автору
 
   для: sim5   (12.11.2009 в 21:10)
 

Это мне не удалось. Можете написать поподробнее?

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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