Просмотр полной версии : Проблема с mootools
Sinclair
08.02.2009, 14:22
Подскажите кто знает, вообщем ситуация следующая: при помощи ajax запроса вывожу дополнительные данные на страницу (данные с другой страницы), внутри этих данных лежить Javascript код, который необходимо сразу же выполнить (указывать функцию бесполезно, так как во время вставки данных, копии этих функций будет много, и есть ли способ запустить ихнее выполнение, может нужно применить writeln для вывода?
Выходит что часть js кода выполняется и работает а часть после обновления стоит мертвым грузом.
Андрей Параничев
08.02.2009, 16:26
Выложите код, где вы делаете запрос.
Sinclair
08.02.2009, 17:40
$jds= '
hs.graphicsDir = "assets/plugins/directresize/libs/highslide/graphics/";
hs.outlineType = "rounded-white";
parent.window.addEvent("load", function() {
var element'.$from_id.' = $("container'.$from_id.'");
var mySlider'.$from_id.' = new Fx.Slide(element'.$from_id.', {duration: 900,transition: Fx.Transitions.circIn});
$("demoForm'.$from_id.'").addEvent("submit", function(e) {
$("load_status'.$from_id.'").style.display = "inline";
new Event(e).stop();
if ($("container'.$from_id.'").innerHTML == "") {
mySlider'.$from_id.'.hide();
new Ajax("[~127~]",{
postBody:$("demoForm'.$from_id.'").toQueryString(),
onComplete:showResponser,
update:element'.$from_id.'
}).request();} else {
new Ajax("[~127~]",{
postBody:$("demoForm'.$from_id.'").toQueryString(),
onComplete:showResponser,
update:element'.$from_id.'
});
mySlider'.$from_id.'.toggle();
$("load_status'.$from_id.'").style.display="none";
}
}
);
function showResponser(request){
$("load_status'.$from_id.'").style.display="none";
mySlider'.$from_id.'.hide();
mySlider'.$from_id.'.toggle();
trm = $("container'.$from_id.'").innerHTML;
}
})
';
этот код копируется на количество этих форм:
<form method="post" action="[~127~]" id="demoForm'.$from_id.'" style="margin: 0; padding:0; left:0;">
<input id="action" name="action" type="hidden" value="dittoAjax" />
<input id="num_page" name="num_page" type="hidden" value="'.$from_id.'"/>
<input id="template" name="template" type="hidden" value="'.$tpl.'"/>
<button type="submit" style="background: none; border: 0px;margin:0;padding:0;">'.$ptitle.'</button><img id="load_status'.$from_id.'" src="assets/plugins/directresize/libs/highslide/graphics/loader.white.gif" style="display: none;">
</form><div id="container'.$from_id.'" style="padding-bottom: 1px;"></div>';
Sinclair
08.02.2009, 17:44
я просто сейчас думаю указать функцию обработчик, который будет запускаться в конце запроса, только как ее написать еще не сильно понял, делаю используя движок modx
Андрей Параничев
08.02.2009, 18:39
Я не очень разбираюсь в mootools, но почему вы делаете запрос через Ajax, а не Request (http://mootools.net/docs/Request/Request)? Во втором случае вы можете просто указать параметр evalScripts для выполнения всех скриптов, полученных в HTML-ответе с сервера.
Sinclair
08.02.2009, 20:13
Спасибо огромное! Все заработало после указания параметра!
Я не так давно занимаюсь ajax, а с библиотеками вообще никогда не работал, поэтому взял готовый пример и переделал его под свои нужды, я просто не заметил особой разницы между текущим и вашим методом. Опишите пожалуйста, какая между ними разница? Вроде как параметры идентичны
Андрей Параничев
08.02.2009, 20:39
Sinclair,
Вот и я не знаю, к сожалению с mootools не работал.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot