LINUX.ORG.RU

javascript внутри ajax


0

0

собственно сабж
поискал в гугле, ничего особо не прегледялось (

пока что остановился на таком решении

I have had the same problem but I found a workaround which is following. Note..it does not work in IE but works beautifully in Netscape and Firefox. May be you can tell me what is the problem with IE.

1 - from your ajax script put a id on your script like.
<script id="scriptFromAjax">
2 - On Success from ajax add the following line.
var response = o.responseText;
document.getElementById("ajaxresponseDiv").innerHTML = response;
//this is where you get all your script contents.
var scriptEle = document.getElementById('scriptFromAjax')
if(scriptEle!=null){
LoadJS(scriptEle.innerHTML);
}


3- Paste the following function in your receiving page. Put a div tag with id=dinamicJScontainer.

function LoadJS(theScript)
{
var newElem = document.createElement("script");
var elemJS = document.getElementById("dinamicJScontainer");


newElem.setAttribute("language","JavaScript1.2");
newElem.setAttribute("type","text/javascript");
//IE is failing on following line.
newElem.innerHTML = theScript;
alert(newElem.innerHTML );
elemJS.appendChild(newElem);
eliminar("dinamicJScontainer");

};

4- Optional -- call the following function if you want to clear the contents of jJavascript.
function eliminar(x){
while(document.getElementById(x).childNodes.length>0){
document.getElementById(x).removeChild(document.getElementById(x).childNodes
[0]);}
};
(http://forums.devx.com/showthread.php?t=163943)

возможно тут что-нибудь посоветуют =)
ps возможно есть какие-то встроенные ф-цию у jquery, prototyp'a ?

thx
anonymous

ajaxResponse="function Bla()"+
"{"+
"    this.showFuck = function ()"+
"    {"+
"       alert(\"Message\");"+
"    }"+
"}";

var obj= eval(ajaxResponse);
obj.showFusk();

Это если я верно понял, что вы хотите получить.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

Как ты написал, работать не должно, ведь eval от функции вернёт функцию, а выполнять её не будет.

Прощё как-то так:

ajaxResponse="{showFuck:function(){alert(\"Message\");}}";

eval(ajaxResponse).showFuck();

anonymfus ★★★★
()
Ответ на: комментарий от wfrr

+1
Написал то что нашел на форумах, завтра будут разгребать

и еще вопрос в догонку,
в jQuery есть такая ф-ция getScript(''), с ее помощью нельзя ли решить текущию проблемму ?

anonymous
()
Ответ на: комментарий от INFOMAN

а никто не может показать реальный пример использования ? :)
(знаю есть доки jquery, но там нет примеров getScript in ajax)

просто тут такая зависимость выходит - что бы запустить javascript мне нужна getScript - которая тоже написана на javascript
=> так или иначе мне нужно анализировать код на тег <script>



anonymous
()
Ответ на: комментарий от anonymous

А в чем проблема-то?

есть файл test.js со следующим содержимым

alert('javascript over AJAX'); var x=200; alert(x)

есть каким-то способом полученный ajaxResponce, содержащий этот файл, делаешь eval(ajaxResponce) и все. Эфект как будто вместо eval(ajaxResponce) было написано alert('javascript over AJAX'); var x=200; alert(x)

На jQuery

$.getScript("test.js")

сделает то-же самое.

На счет jQuery, ели пропустил, хороший ресурс http://visualjquery.com/

zzandy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.