Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[ajax] wywołanie JS w pliku PHP

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[ajax] wywołanie JS w pliku PHP

Post 04.05.2008, 21:08:54

za pomocą Ajax tworzę sobie dynamiczną treść (robi to plik .php), jednak zauważyłem duży problem. chciałbym mieć możliwość w tym skrypcie PHP używania JavaScript a takiej opcji nie mam ... JS jest jakby omijany... ? spotkał się ktoś może z czymś takim?
michal21
Posty: 52
Dołączył(a): 11.06.2006

Post 04.05.2008, 21:18:47

np. jeśli chociażby w skrypcie PHP który jest obsługiwany przez AJAX znajdzie się
Kod: Zaznacz cały
 <script type="text/javascript"> alert('test'); </script>
jest to pomijane ... jak temu zaradzić?
michal21
Posty: 52
Dołączył(a): 11.06.2006

Post 04.05.2008, 21:59:01

Nie wiem, czy Cię dobrze rozumiem. Daj link do testowej strony lub podaj tutaj kod i opisz co chciałeś uzyskać, a co w rzeczywistości uzyskujesz. Jedyna sensowna rzecz jaka przychodzi mi do głowy, to fakt, że w wyniku żądania otrzymujesz treść HTML zawierającą znaczniki <script>. Tę treść wstawiasz do dokumentu, ale skrypty się nie wykonują. Jeśli o to chodzi, to tak się za bardzo nie da. Musiałbyś od nowa utworzyć węzły elementów SCRIPT i wstawić do nich treść skryptów (za pomocą DOM, document.createElement, element.appendChild i te sprawy) lub np. tak jak ma to jQuery skorzystać z getScript jeśli chcesz sam kod JS otrzymać.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19533
Dołączył(a): 14.04.2002

Post 04.05.2008, 22:25:00

wygląda to tak:

mam plik ajax_start.js który zawiera w sobie obsługę AJAX

Kod: Zaznacz cały
function getXMLHttpRequestObject()
{
  try{
    return new XMLHttpRequest();
  }
  catch(e){
    try{
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e){
      return false;
    }
  }
}

function startGETRequest(url, onComplete, onEnd) ...
function startPOSTRequest(url, params, onComplete, onEnd) ...


mam też plik ajax.js, który zawiera odnośnik do skryptu PHP

Kod: Zaznacz cały

function runAjax(strona)
{
  url = "tekst_galeria.php?strona="+strona;
  url = encodeURI(url);

  startGETRequest(url, onComplete, true);
}

function onComplete(text, xml)
{
  var ajaxDiv = document.getElementById("ajaxDiv");
  ajaxDiv.innerHTML = text;
}




następnie mam plik tekst_galeria.php, który pobiera z bazy tekst i obrazek

Kod: Zaznacz cały

// połączenie z bazą

echo "tekst: ".$q["tekst"];

echo "<img src=\"img/".$q["obrazek"]."\">";



to wszystko działa zrobiłem sobie napis WCZYTYWANIE gdy pobiera dane z bazy, ale jak już pisałem tutaj http://forum.webhelp.pl/viewtopic.php?p=852995#852995 mam problem z obrazkiem. chciałbym aby obrazek pojawił się od razu już załadowany a nie doczytywał. skorzystałem z Twojej rady i zrobiłem preloading

Kod: Zaznacz cały

<div id="loadingID"></div>
<img src="" id="imgID">

<script type="text/javascript">

   preload_img = new Image();
   image_url = "img/test.jpg";

   document.getElementById('loadingID').style.display='block';
   document.getElementById('loadingID').innerHTML='wczytywanie obrazka';

   preload_img.src = image_url;

   preload_img.onload=function(){

     document.getElementById('loadingID').style.display='none';
     document.getElementById('imgID').src=preload_image_object.src;

   }

</script>


teraz następuje właśnie problem. gdy chcę ten preloading "wmontować" w skrypt PHP to nic się nie dzieje... jakby JS został olany. natomiast zauważyłem, że gdy w skrypcie PHP wywołamy powyższy skrypt jako funkcje za pomocą onclik to działa... tylko to mi nic nie daje, bo bym chciał aby po wczytaniu poprzez AJAX skryptu PHP automatycznie wywołał się JS, wygląda to mniej więcej tak:

Kod: Zaznacz cały
<?php
// połączenie z bazą

echo "tekst: ".$q["tekst"];

<div id="loadingID"></div>
<img src="" id="imgID">
?>
<script type="text/javascript">

   preload_img = new Image();
   image_url = "img/"+<?=.$q["obrazek"]?>;

   document.getElementById('loadingID').style.display='block';
   document.getElementById('loadingID').innerHTML='wczytywanie obrazka';

   preload_img.src = image_url;

   preload_img.onload=function(){

     document.getElementById('loadingID').style.display='none';
     document.getElementById('imgID').src=preload_image_object.src;

   }

</script>


nie wiem co robić ... :(
michal21
Posty: 52
Dołączył(a): 11.06.2006

Post 05.05.2008, 08:38:59

no chyba, że jest jakiś inny sposób w jaki mogę to zrobic ??
michal21
Posty: 52
Dołączył(a): 11.06.2006


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 11 gości

Hosting, Domeny, SSL
iCash

Subskrypcja

Mamy 50185 zarejestrowanych użytkowników.
Najnowszy użytkownik: sskijop


Nasi użytkownicy napisali:

  • 935003 wiadomości
  • w 246317 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)