Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywołanie funkcji PHP bez przeładowania strony
Forum PHP.pl > Forum > XML, AJAX > AJAX
Looozak
Witam. Jak w temacie, krótko i na temat bo wszystkie rozpisane tematy są tak zamotane czyimś kodem, że nie mogę się odnaleźć. Otóż posiadam funkcje php w klasie o nazwie np ocena_plus i chce aby wywołanie funkcji np $this->ocena_plus po kliknięciu na link odbywało się w tle. W tej funkcji następuje oczywiście zmiana wartości w MySQL. Co muszę konkretnie dodać, gdzie i jak zrobić aby js - onClick zadziałało w tle. Pozdrawiam.
motyl-pl
Dam Ci ode mnie przykład o ile Ci to może pomóc:

JavScript
Kod
        function ocena(id, wartosc) {    
            if (window.XMLHttpRequest)    { xmlhttp=new XMLHttpRequest(); }
            else                        { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("txt_ocena_"+id).innerHTML=xmlhttp.responseText;
                }
              }
            xmlhttp.open("GET","http://localhost/vote/add/"+id+"/"+wartosc+".html",true);
            xmlhttp.send();
        }


Php obslugujacy vota:
  1. public function add()
  2. {
  3. // Uri
  4. $this->ip = $_SERVER['REMOTE_ADDR'];
  5. $this->wpisID = $this->uri->segment(3);
  6. $this->wartosc = $this->uri->segment(4);
  7.  
  8. $spr = $this->MVote->spr($this->ip, $this->wpisID);
  9. if($spr->num_rows == 0) {
  10. $data = array('ip' => $this->ip,
  11. 'wpisID' => $this->wpisID,
  12. 'ocena' => $this->wartosc);
  13. $this->MVote->add($data);
  14. $this->MVote->add_wpis($this->wpisID, $this->wartosc);
  15.  
  16. echo 'Thank you for vote';
  17. } else {
  18. echo 'Your vote is here already';
  19. }
  20. }


Uruchomienie:
Kod
                                        <div id="txt_ocena_<?= $wpisID ?>" class="ocena">
                                            <span style="color:white;font-weight:bold;font-size:15px;float:left;margin-right:5px;">Vote:</span>
                                            <img src="<?= base_url("media/images/smile.png"); ?>" alt="" onClick="ocena(<?= $wpisID ?>, 1);">
                                            <img src="<?= base_url("media/images/sad.png"); ?>" alt="" onClick="ocena(<?= $wpisID ?>, 2);">
                                                                                        <br>
                                            <span style="margin-left:40px;font-size:13px;">
                                            <?= $ocena_tak ?> | <?= $ocena_nie ?>
                                            </span>
                                        </div>


Looozak
Niestety, ale dzięki za chęci. Zrobiłem normalnie z przeładowaniem i z przeniesieniem do odpowiedniego miejsca poprzez #...
ohm
http://api.jquery.com/jQuery.get/

Robisz $('.klasa').click itd. i wywołujesz get/post do danego skryptu.
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.