Autor | Zpráva | ||
---|---|---|---|
Pepe15th Profil * |
#1 · Zasláno: 28. 12. 2011, 15:05:04
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']; } ?> <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> |
||
_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 * |
#3 · Zasláno: 28. 12. 2011, 16:13:56
Omylem jsem tam už ze zvyku přidal
$(document).ready(function(){}); , teď je to pryč a nic se nezměnilo.
|
||
Kcko Profil |
#4 · Zasláno: 28. 12. 2011, 16:39:10
Pepe15th:
Někam to vystav, takto můžeme pouze odhadovat a přícin může být milion. |
||
Pepe15th Profil * |
#5 · Zasláno: 28. 12. 2011, 17:08:59
Takže je to tady: http://exgames.cz/cast-prvni-1
Jsou to ty dvě modré podtržené nuly pod sebou. |
||
_es Profil |
#6 · Zasláno: 28. 12. 2011, 17:33:57
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 * |
#7 · Zasláno: 28. 12. 2011, 17:49:09
_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']; var id = $(this).attr("id"); var name = $(this).attr("name"); var dataString = 'id='+ id ; var parent = $(this); if (name=='up') { $.ajax({ type: "POST", „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: ht>tp://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 * |
#9 · Zasláno: 28. 12. 2011, 19:00:55
_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 |
#10 · Zasláno: 28. 12. 2011, 19:26:46
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 * |
#11 · Zasláno: 28. 12. 2011, 20:25:54
_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 * |
#13 · Zasláno: 29. 12. 2011, 12:40:18
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(){ }; |
||
_es Profil |
#14 · Zasláno: 30. 12. 2011, 19:14:12
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].
|
||
Časová prodleva: 12 let
|
0