Autor Zpráva
Pepe15th
Profil *
Podle návodu na 9lessons.info jsem se pokusil zprovoznit bodování komentářů - jednoduše plus a minus.
Obracím se na vás s prosbou, jestli se mi na to můžete podívat.
Příklad bohužel nemám, avšak po kliknutí na plus se stránka jakoby zaktualizuje (F5) a víc nic...
js (http://localhost/test/js/clanky.js):
$(document).ready(function() {
    $(function() {
        $(".vote").click(function() {
            var id = $(this).attr("id");
            var name = $(this).attr("name");
            var dataString = 'id='+ id ;
            var parent = $(this);

             if (name=='up') {
                $.ajax({
                    type: "POST",
                    url: "http://localhost/test/panely/clanky/kom_plus.php",
                    data: dataString,
                    cache: false,

                     success: function(html) {
                        parent.html(html);
                    }
                });
            }
            else {
                $.ajax({
                    type: "POST",
                    url: "http://localhost/test/panely/clanky/kom_minus.php",
                    data: dataString,
                    cache: false,

                     success: function(html) {
                        parent.html(html);
                    }
                });
            }
            return false;
        });
    });
});

php (http://localhost/test/panely/clanky/kom_plus.php):
<?php
include_once '../../jadro.php';//db
$ip = $_SERVER['REMOTE_ADDR'];
if ($_POST['id']) {
    $id = $_POST['id'];
    $id = mysql_real_escape_string($id);
    $sql = mysql_query("select ip_add from clanky_kom_hod where id_kom_fk='$id' and ip_add='$ip'");
    $count = mysql_num_rows($sql);
    if ($count == 0) {
        mysql_query("update clanky_kom set plus = plus+1 where id_kom='$id'");
        mysql_query("insert into clanky_kom_hod (id_kom_fk, ip_add) values ('$id','$ip')");
    } else {
        echo "<script>alert('Již jste hlasovali.');</script>";
    }
    $vysledek = mysql_query("select plus from clanky_kom where id_kom='$id'");
    $row = mysql_fetch_array($vysledek);
    echo $row['plus'];
}
?>
a HTML (už v prohlížeči):
<div class="main">
    <div class="box1">
        <div class="up">
            <a href="" class="vote" id="1" name="up">2</a>
        </div>
        <div class="down">
            <a href="" class="vote" id="1" name="down">0</a>
        </div>
    </div>
</div>
Díky moc
_es
Profil
Pepe15th:
se stránka jakoby zaktualizuje (F5) a víc nic...
A čo viac by si chcel od kódu v tvare:
$(document).ready(function(){ $(function(){ nejaký kód });});

Podle návodu na 9lessons.info jsem se pokusil zprovoznit bodování komentářů
Tam taký nezmyselný kód nemajú.
Pepe15th
Profil *
Omylem jsem tam už ze zvyku přidal $(document).ready(function(){});, teď je to pryč a nic se nezměnilo.
Kcko
Profil
Pepe15th:
Někam to vystav, takto můžeme pouze odhadovat a přícin může být milion.
Pepe15th
Profil *
Takže je to tady: http://exgames.cz/cast-prvni-1
Jsou to ty dvě modré podtržené nuly pod sebou.
_es
Profil
Pepe15th:
Jsou to ty dvě modré podtržené nuly pod sebou.
No ale veď tie v kóde pri načítaní nie sú. Je to neskôr nejako doplnené JavaScriptom, teda na to ten kód v [#1] nemá vplyv. Okrem toho majú oba odkazy rovnaké id, čo je ďalšia chyba.
Pepe15th
Profil *
_es:
No ale veď tie v kóde pri načítaní nie sú. Je to neskôr nejako doplnené JavaScriptom, teda na to ten kód v [#1] nemá vplyv.
Však takhle funguje AJAX ne?
V PHP zjišťuje id, které mu má předat AJAX.
PHP:
if ($_POST['id']) { 
    $id = $_POST['id']; 
AJAX:
 var id = $(this).attr("id"); 
            var name = $(this).attr("name"); 
            var dataString = 'id='+ id ; 
            var parent = $(this); 
 
              if (name=='up') { 
                $.ajax({ 
                    type: "POST", 
- aspoň tak nějak to plyne z toho článku

Okrem toho majú oba odkazy rovnaké id, čo je ďalšia chyba.
Tady je demo originálu: http://demos.9lessons.info/voting.php, mají to tam stejně.
_es
Profil
Pepe15th:
Tady je demo originálu: http://demos.9lessons.info/voting.php, mají to tam stejně.
No, v tomto prípade vlastne rovnaké id nevadí. Len to na prvý pohľad vyzeralo na ďalšiu chybu.

Však takhle funguje AJAX ne?
Čo to má spoločné s AJAXom? Pokúšaš sa niečo spraviť s neexistujúcimi elementmi. Sprav to s nimi vtedy, keď existujú.
Pepe15th
Profil *
_es:
Dobře, ale to demo funguje a já jsem kódy z tutoriálu moc neupravoval - nemůžeš mě trochu víc nakopnout?
_es
Profil
Pepe15th:
Originál demo po nahratí stránky nastaví, ako majú tie špeciálne odkazy fungovať. Keďže ty ich tam nemáš normálne, teda nevzniknú pred nahratím stránky - tak ako v deme, ale ich vkladáš cez JS a teda môžu vzniknúť až po nahratí stránky, tak ich ten skript nemusí nastaviť. Teda to buď spravíš tak ako v deme, alebo kód vo funkcii vloženej vo volaní funkcie $ spustíš až vtedy, keď tie dynamicky vkladané odkazy budú existovať.
Pepe15th
Profil *
_es:
Tak jsem tě konečně pochopil.
Mám komentáře, které jsou načítány AJAXem kvůli stránkování. Já potřebuji hodnocení, které se vkládá do komentářů - dva AJAXy v jednom...

kód vo funkcii vloženej vo volaní funkcie $ spustíš až vtedy, keď tie dynamicky vkladané odkazy budú existovať
něco takového bych potřeboval - jak se to dá realizovat?
_es
Profil
Pepe15th:
jak se to dá realizovat?
No tak ten kód spustíš po úspešnom vytvorení odkazov, aj jQuery metóda load umožňuje na to zadať callback funkciu.
Alebo dáš do tých odkazov HTML atribút onclick="return funkcia(this)" a v tej funkcii bude kód funkcie zadávanej do jQuery metódy click, len namiesto this použiješ argument funkcie.
Pepe15th
Profil *
Já jsem v js úplný začátečník a z toho co jsem našel na googlu mi fungovalo jenom tohle:
window.onload = function(){
};
Asi to není to pravé, že?
_es
Profil
Pepe15th:
z toho co jsem našel na googlu
To čakáš, že na hocičo, čo ťa napadne, nájdeš hotový skript, ktorý ti bude stačiť skopírovať?
Ak chceš vymýšľať a robiť niečo inak, ako v tom kompletnom návode, tak si to musíš upraviť sám.
Všetko potrebné máš v tomto vlákne, treba to len pozorne čítať a samozrejme aj pozrieť príslušnú dokumentáciu - napríklad http://api.jquery.com/load/ - túto metódu máš použitú vo vlastnom skripte v clanky.js a potom viď prvá možnosť v [#12].

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0