Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с mootools (https://javascript.ru/forum/misc/2761-problema-s-mootools.html)

Sinclair 08.02.2009 14:22

Проблема с mootools
 
Подскажите кто знает, вообщем ситуация следующая: при помощи 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? Во втором случае вы можете просто указать параметр evalScripts для выполнения всех скриптов, полученных в HTML-ответе с сервера.

Sinclair 08.02.2009 20:13

Ура
 
Спасибо огромное! Все заработало после указания параметра!

Я не так давно занимаюсь ajax, а с библиотеками вообще никогда не работал, поэтому взял готовый пример и переделал его под свои нужды, я просто не заметил особой разницы между текущим и вашим методом. Опишите пожалуйста, какая между ними разница? Вроде как параметры идентичны

Андрей Параничев 08.02.2009 20:39

Sinclair,
Вот и я не знаю, к сожалению с mootools не работал.


Часовой пояс GMT +3, время: 19:49.