Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Shoutbox, działa odświeżanie, nie działa wysyłanie
Forum PHP.pl > Forum > XML, AJAX > AJAX
Avatarus
Witam
Mam problem.
Mam dwa pliki php, jednen odpowiada za wyświetlanie danych pobranych z bazy, a drugi ma za zadanie zapisanie nowych danych do bazy.
Wytuacja wygląda tak jest jest jedno pole TEXTAREA i po nim 2 przyciski: wyślij i odśwież
Odśwież wywyołuje plik króty pobiera dane z bazy, a potem te dane są wyrzycane na stronę
Plik wyślij ma za zadanie zapisać dane z pola textarea do bazy i potem odpalić plik wyślij.
Wszystko ma działac oczywiście pod kontrolą AJAXu.

Oto funkcja która odświeża dane:
  1. <?php
  2. <script type="text/javascript">
  3.  
  4. var ObiektXMLHttp = false;
  5. if (window.XMLHttpRequest)
  6.  {
  7.   ObiektXMLHttp = new XMLHttpRequest(); }
  8. else if (window.ActiveXObject)
  9.    {
  10.       ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  11.   }
  12. function getData(zrodlo, cel)
  13. {
  14. if(ObiektXMLHttp)
  15.  {
  16.   var cel = document.getElementById(cel);
  17.   ObiektXMLHttp.open("GET", zrodlo);
  18.    ObiektXMLHttp.onreadystatechange = function()
  19.    {
  20.         if (ObiektXMLHttp.readyState != 4)
  21.              {
  22.                cel.innerHTML = "<b><font color=white>Ładowanie...</font></b>";
  23.             }
  24.     if (ObiektXMLHttp.readyState == 4)
  25.           {
  26.                cel.innerHTML = ObiektXMLHttp.responseText;
  27.           }
  28.    }
  29.  
  30.    ObiektXMLHttp.send(null);
  31.    }
  32. }
  33. </script>
  34. ?>


i to działa (przycisk odśwież wywołuj się tak:
  1. <input type=button value=Odśwież class=shout_buton onclick = \"getData('shoutbox.php', 'div')\">


Problem tkwi z zapisaniem tych danych i wyświetleniem tego na stronie
Zrobiłem do tego funkcje:
  1. <?php
  2. function sendData(wiadomosc,zrodlo,cel)
  3. {
  4.    if(ObiektXMLHttp)
  5.  {
  6.   var cel = document.getElementById(cel);
  7.    ObiektXMLHttp.open("POST",wiadomosc,true);
  8.    ObiektXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  9.   ObiektXMLHttp.setRequestHeader("Content-length", wiadomosc.length);
  10.   ObiektXMLHttp.setRequestHeader("Connection", "close");
  11.   ObiektXMLHttp.onreadystatechange = function()
  12.    {
  13.         if (ObiektXMLHttp.readyState != 4)
  14.              {
  15.                cel.innerHTML = "<b><font color=white>Zapisywanie wiadomości...</font></b>";
  16.             }
  17.     if (ObiektXMLHttp.readyState == 4)
  18.           {
  19.                cel.innerHTML = ObiektXMLHttp.responseText;
  20.                
  21.           }
  22.    }
  23. getData(zrodlo,cel);
  24.    ObiektXMLHttp.send(wiadomosc);
  25.    }
  26.    
  27.    
  28. }
  29. ?>

ale nie działa.
Dlaczego?
wywołuje ją tak:
  1. <?php <input type="button" name=wyslij_ajax value="ajax" onclick="sendData('wiadomosc','shoutbox_ajax.php','div')" />
  2. ?>


Z góry dziękuje za pomoc.
Pawel_W
daj to w tag html bo nie da się patrzeć...
Avatarus
dobra już wiem jak to zrobić, tylko mały problem z przekazaniem zmiennej z ajaxowej funkcji do php.

Teraz buton wyślij jest submitem ale nie ma przypisanej akcji, jest natomiast akcja onsubmit do formy która odpala funckje sendData(wiadomosc, zrodlo, cel)
i teraz jak do tej zmiennej "wiadomosc" przypisać zawartość textarea (id=shout)?

ok mam już wszystko, tylko teraz mały problem.
Wszystko jest ok tylko nie zawsze zapisuje to co ma zapisać.
wyglada to tak jak bym nie mieścił się w czasie i raz zapisze a raz nie.
Można to jakoś naprawić?

oto funkcja:
Kod
function sendData(shout,zrodlo,cel)
{
    if(ObiektXMLHttp)
  {
   var cel = document.getElementById(cel);
    var wiadomosc = document.getElementById(shout);
    wiadomosc = wiadomosc.value;
    ObiektXMLHttp.open("POST","shoutbox_ajax.php");
    ObiektXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   ObiektXMLHttp.onreadystatechange = function()
    {
        if (ObiektXMLHttp.readyState != 4)
             {
                
                cel.innerHTML = "<b><font color=white>Zapisywanie wiadomości...</font></b>";
             }
    if (ObiektXMLHttp.readyState == 4)
           {
                
                cel.innerHTML = "<b><font color=white>Zapisano...</font></b>";
           }
    }
    
    
     ObiektXMLHttp.send("wiadomosc=" + wiadomosc);
    getData("shoutbox.php","div");
    
    }
    
    
}
</script>


juz ok, wystarczyło funkcje getdata wrzucić do redystet==4 i działa dobrze biggrin.gif
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.