Выпонение JavaScript полученного по AJAX

ZigFreeD

Новичок
Выпонение JavaScript полученного по AJAX

Здравствуйте!
Не подскажите ли как выполнить JavaScript полученный по AJAX?

Хотябы
PHP:
<script type="text/javascript">
alert("УРА!!!");
</script>
этот скрипт я получаю запросом AJAX... кладу его в div но он не выполняется :(
Если создам функцию и попытаюсь ее активировать, то пишет что не найден объект :(
 

ZigFreeD

Новичок
только без хтмл-тэгов
Нет... мне хтмл тоже нужен... ну вот пример чуть другой...

Eval тоже катит... т.к. я получаю не только html код но и функцию javaript... на которую введет ссылка из полученного текста!

А через eval у меня не поулчилось вставить функцию в div :(

Короче смотрите... имеется
PHP:
<html>
<div id="test">
</div>

<a href="#" onclick="ftest();return false;">Ссылка</a>
<script type="text/javascript"> 
function ftest()
{
    temp='<a href="#" onclick="ttest();return false;">Ссылка2</a>';
	document.getElementById("test").innerHTML=temp;
}
</script>
</html>
как видете в div test передается содрежимое переменной temp.
в этой переменной имеется ссылка на функцию... и должна быть еще сама функция! Но я не знаю как ее туда запихать :( причем так чтобы при клике на ссылку выполнялась функция :(((

-~{}~ 22.09.07 14:06:

заранее спасибо
 

voituk

прозревший
Передавай отдельно JS и HTML-код
HTML вставляй в DOM-дерево, а JS выполняй eval()-ом
Так будет правильно.
 

ZigFreeD

Новичок
Автор оригинала: voituk
Передавай отдельно JS и HTML-код
HTML вставляй в DOM-дерево, а JS выполняй eval()-ом
Так будет правильно.
А как сделать чтобы когда я вывожу javascript через eval на экран не выводилась надпись "undefined"?
 

dimagolov

Новичок
ZigFreeD, может стоит разобрать что же там undefined? а то телепаты в отпуске.
вообще eval далеко не лучшее решение. отладка просто убиться.
 

Antonimo

Новичок
бывает что нужно определить функцию или класс полученные с Ajax,
по идее такой код: function somefunc(args) { native code }
нужно писать так: window['somefunc'] = function(args) { native code }
и тогда функция или класс определятся глобально :)
 

dimagolov

Новичок
Antonimo, проблема в том, что делать пока функция не пришла с сервера? ценность то представляет не ф-я как таковая, а возможность ее выполнить. Или проверять по setTimeout if (typeof(somefunc) != 'undefined') ?
 

cDLEON

Онанист РНРСlub
dimagolov
Я именно так и делал.
Вот кроссбраузерный пример загрузки JS.
Для того, что б вы не понабивали шишек, как получилось у меня)
PHP:
if(App.Module[self.name])
	{
	this.onLoad();
	return false;
	}
var path='/modules/'+self.name+'/index.js?'+Math.random();
if (Browser.isSafari)
	{
	function onscriptload(response)
		{
		eval(response.responseText);
		self.onLoad();
		}
	Request.sendGET(path, onscriptload);
	}
else
	{
	var oHead = document.getElementsByTagName("head")[0];
	var oScript = document.createElement('script');
	oScript.setAttribute('src', path);
	oScript.setAttribute('type', 'text/javascript');
	if (Browser.isFirefox)
		{
		oScript.onload = function()
			{
			if (typeof App.Module[self.name] != "function")
				return false;
			self.onLoad();
			}
		oHead.appendChild(oScript);
		}
	else
		{
		oHead.appendChild(oScript);
		waitForExistence();
		}
	}
	function waitForExistence()
		{
		if (App.Module[self.name])
			self.onLoad();
		else
			setTimeout(waitForExistence,100);
		}
	}
 
Сверху