Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje JS zwracane przez php za pomocą AJAXa
Forum PHP.pl > Forum > XML, AJAX
wwwkw
Mam problemik z JS I AJAXEM. Chodzi o to że wywoluję za pomoca AJAXa stronkę w php która zwraca mi kod JS z różnymi funkcjami np:

<?php echo "<script> function d() { alert('ok') }</script>";
?>

i gdy próbuję tą funkcje wywołać po stronie klienta to wyskakuje błąd JS: "Wymagany obiekt" lub "obiekt nie odsługuje tej metody"

Jak taką funkcje wywołać po stronie klienta?? Zaznaczam że kod funkcja w JS musi być zwracany przez php.


kod html:

<script>
function w() {
advAJAX.get({
url: "d.php",
onSuccess : function(obj) {
document.getElementById('d').innerHTML = obj.responseText;}
});
}
</script>
<div id="d"></div>
<input type="button" value="Pobierz" onclick="w()" />
<input type="button" value="funkcja JS" onclick="d()" />
anopak
w skrócie, musisz pozbyć się <script> i dać eval na responseText. Bardzo ładnie jest to rozwiązane w prototype
Piotr_M
Miałem ten sam problem. Nie znam się dobrze na js, ale coś takiego działa prawie dobrze. Jedyna wada, to że wyłapuje tylko pierwszy tag <script>. Nie wiem jak to napisać, żeby wszystkie przetwarzało. Pętla przez tablicę m nie pomaga.
  1. <?php
  2. // Kod javascript:
  3. var jsRegexp = new RegExp('<script.*?>((.|\n)*?)<\/script>', 'img');
  4. // data to odpowiedź z serwera
  5. var m = jsRegexp.exec(data);
  6. if(!= null){
  7. eval(m[1]);
  8. }

Sprawdzałem na ff 1.5.0.3, ie 6 i operze 8.52
anopak
kawałek z prototype:

  1. var ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
  2. var match    = new RegExp(ScriptFragment, 'img');
  3. var response = data.replace(match, '');
  4. var scripts  = data.match(match);
  5.  
  6. match = new RegExp(ScriptFragment, 'im');
  7. for (var i = 0; i < scripts.length; i++)
  8.          eval(scripts[i].match(match)[1]);


powinno działać, ale nie dam sobie głowy za to uciąć...
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.