Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcje JS zwracane przez php za pomocą AJAXa
wwwkw
post 12.05.2006, 11:27:23
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.04.2006

Ostrzeżenie: (0%)
-----


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()" />
Go to the top of the page
+Quote Post
anopak
post 12.05.2006, 19:48:40
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


w skrócie, musisz pozbyć się <script> i dać eval na responseText. Bardzo ładnie jest to rozwiązane w prototype


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
Piotr_M
post 14.05.2006, 13:37:14
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 18.09.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
anopak
post 14.05.2006, 21:32:58
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


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ąć...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:05