Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advAjax] zwrocenie kodu JavaScript
Forum PHP.pl > Forum > XML, AJAX
be2k
witam
za pomoca advAJAX wywoluje skrypt php, ktory zwraca mi nastepujaca tresc:
  1. <?php
  2. $output='<script type="text/javascript">';
  3. $output.='function lipa() { alert("lalala"); }';
  4. $output.='</script>';
  5. $output.='<div onClick="lipa();">tekst</div>';
  6. echo $output;
  7. ?>

czyli Ajax zwraca html'a z definicja jakiejs funkcji javascriptowej i zarazem w zwroconym html jest wywolanie tej funkcji - tu w divie. Problem polega na tym, ze gdy zwrocony html wstawie na strone i klikne w diva to wyskakuje blad - brak definicji funkcji lipa().

wiem ze mozna to obejsc, gdy funkcje lipa() zdefiniuje wczesniej (w kodzie w ktorym jest wywolanie Ajaxa), ale takie rozwiazanie mnie nie satysfakcjonuje.

napewno ktos spotkal sie z takim problemem, czy znacie jego rozwiazanie?
Cezar708
możesz użyć funkcji eval(). Ale pamiętaj aby użyć jej jak będzie status wywołania ajaxowego 200 (czyli strona się załaduje) no i oczywiście wywołujesz samo ciało funkcji, czyli mniej więcej:
Kod
if ( httpRequestStatus == 200 ){
  eval(responseText);
}


a w przedstawionym przypadku musi to być:
Kod
alert("lalala");
be2k
nie no. wywolanie alert() jest banalne. nie trzeba uzywac eval(), wystarczy zrobic cos takiego:
  1. <?php
  2. header ('Content-type: text/javascript');
  3. echo "alert('tekst');";
  4. ?>

mi chodzi o funkcje ktora wykonuje bardziej zlozone rzeczy. alert() - umiescilem w niej tylko dla przykladu.
box3r
nie przesylaj kodu javascriptowego za pomoca php przesylaj tylko flage czy dany kod ma sie wykonac. Jezeli nie
chcesz odrazu kodu wczytywac zrob to tak jak tu http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm
be2k
znalazłem juz sposob i jest wlasnie taki jak na podeslanej przez Ciebie stronie,
thx za odpowiedzi
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.