Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax] Skrypt zwiększający rekord o jeden
Forum PHP.pl > Forum > XML, AJAX
Falcon2
Witam

Chciałbym się zapytać o mały skrypt ajax. Chodzi mi o system głosowania (coś jak ma skrypt katalogu freeglobes albo wykop) - mianowicie np. po lewej stronie widnieje button "oddaj głos" a nad nim ilość głosów, po kliknięciu głos ten zwiększa się o +1 bez odświeżania strony - moglibyście mnie nakierować gdzie znajdę jakieś informacje do napisania takiego modułu ?
erix
Wystarczy Ci pierwszy lepszy kurs JavaScript + AJAX.

To naprawdę nie jest trudne - wysyłasz żądanie z odpowiednim ID pozycji, na którą głosujesz, a serwer zwraca bieżącą notę.
daniel1302
Mi przypadł do gustu advAjax, do takich rzeczy najlepiej się nadaje. Lecz trzeba znać podstawy JS a jak chcesz uzywac na wieksza skale ajaxa i JS to weź sobie jQuery
Falcon2
już sobie poradziłem, ale nie do końca... mam problem z elementami eval i wyświetleniem zmodyfikowanych danych
erix
Kurs JavaScript w łapkę - łączenie stringów.
Falcon2
@erix: szukałem i nie znalazłem, a w ogóle chyba od tego jest forum żeby pytać ludzi, którzy znają się na rzeczy?

wzorowane na: http://webhosting.pl/Jak.stworzyc.przycisk...wania.w.Ajaksie

kod JS wygląda tak:
Kod
var xmlHttp;

function ajaxInit() {
    
    try  {
          // Firefox, Opera 8.0+, Safari
          xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
          // Internet Explorer
          try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch (e) {
            try {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {
              alert("Twoja przeglądarka nie obsługuje AJAXa!");
              return false;
           }
        }
    }
}

function zablokuj(id) {
    eval("document.images['button_plus_"+id+"'].src = 'http://localhost/ajaxvote/imgs/vote_plus_unactive.gif'");
       eval("document.images['button_minus_"+id+"'].src = 'http://localhost/ajaxvote/imgs/vote_minus_unactive.gif'");
       eval("document.images['button_minus_"+id+"'].onclick = 'void()'");
    eval("document.images['button_plus_"+id+"'].onclick = 'void()'");

}

function vote(id, typ) {
    ajaxInit();
    xmlHttp.onreadystatechange=function() {    
        if(xmlHttp.readyState==4)
            {
            a = xmlHttp.responseText;
            if (a != "false") {
                zablokuj(id);
                eval("document.forms[0].ocenaw"+id+".value = a");
            }
        }
    }    
    if (typ == 'plus')
    {
        xmlHttp.open("GET","http://localhost/ajaxvote/ajvote.php?plus=1&k="+id,true);
    }    
    else
    {
        xmlHttp.open("GET","http://localhost/ajaxvote/ajvote.php?minus=1&k="+id,true);
    }
    xmlHttp.send(null);
}


a button z wynikiem:
  1. <?php
  2. $cont.= '<img class="guziki" id="button_plus_'.$row['id'].'" src="imgs/vote_plus_active.gif" alt="głosuj na plus"
  3. onclick="vote('.$row['id'].', 'plus')"> <img class="guziki" id="button_minus_'.$row['id'].'" src="imgs/vote_minus_active.gif" alt="głosuj na nuys"
  4. onclick="vote('.$row['id'].', 'minus')"> (<input type="text" class="ocena" "name="ocenaw'.$row['id'].'" value="'.$row['vote'].'" size="1">';
  5. ?>


po przerobieniu do mojego cms- a nie działa value dla input (
Kod
eval("document.forms[0].ocenaw"+id+".value = a");
)wyświetlającego wynik (za to zamiana obrazka głosowania funkcjonuje jak należy) dlatego chciałbym się zapytać czy da się jakoś przerobić ten skrypt, że zamiast <input> będzie można wstawić tekst np. w div albo span?
erix
Cytat
@erix: szukałem i nie znalazłem, a w ogóle chyba od tego jest forum żeby pytać ludzi, którzy znają się na rzeczy?

Jakoś ja znalazłem: http://webmade.org/kursy-online/zmienne-ja...-javascript.php

Forum jest po to, aby naprowadzać, a nie szurnąć gotowca. A żadna sztuka go Ci dać, jak zechcesz jeszcze coś do niego dodać i znowu będziesz pisał o tym samym, a samodzielnie nie zrobisz.

Aby móc rozmawiać w danym języku, musisz poznać słówka. Bez podstaw naprawdę nie mamy o czym rozmawiać...
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.