Onclick utáni frissítés

Onclick utáni frissítés
2011-03-09T15:06:36+01:00
2011-03-09T22:53:18+01:00
2022-11-21T02:40:39+01:00
Forg4t
Sziasztok!

A tegnapi nap sikerült befejeznem, egy "like" rendszert. A lényeg, hogy amikor a felhasználó rányom a "Like" gombra, akkor beírja szépen az adatbázisba az adatokat... viszont ugyan azon a lapon le is kérdezem, csak az a baj, hogy az új lájkolás csak akkor jelenik meg, ha frissítem a lapot. Hogyan tudom belegyúrni azt, hogy amikor lefut az insert az sql-ben, akkor ugyan azon a lapon, az oldal teljes frissítése nélkül, csak az az egy adott div-et frissítse amiben azok a felhasználók találhatók akik lájkoltak. Egy angol nyelvű videó megosztóról van szó.

php-ajax-json-smarty

ahol a likeolás történik: view_video.php
ahol a liknak a lekérdezése történik: view_video.php
ahol lefut a like: video_like.php
ahol lefut az unlike video_unlike.php
a js : video_like.js

maga a js:


$(document).ready(function(){ $("span.on_img").mouseover(function () { $(this).addClass("over_img"); }); $("span.on_img").mouseout(function () { $(this).removeClass("over_img"); }); $(".js_link").hover(function () { $(this).addClass("js_link_hover"); }, function () { $(this).removeClass("js_link_hover"); }); }); function video_like(video_id) { var sUrl = baseurl + '/ajax/video_like.php'; var postData = "video_id=" + video_id; $.ajax({ type: "POST", url: sUrl, data: postData, dataType: 'json', success: video_like_success, error: video_like_error }); } function video_like_success(json) { if (json.messageType == 'success') { $('#like').fadeOut(400).hide(); $('#unlike').fadeIn(400).show(); } else if(json.messageType == 'error') { $('.like_b').hide().fadeIn(400).html(json.message); } } function video_like_error() { alert('Ajax Error'); } function video_unlike(video_id) { var sUrl = baseurl + '/ajax/video_unlike.php'; var postData = "video_id=" + video_id; $.ajax({ type: "POST", url: sUrl, data: postData, dataType: 'json', success: video_unlike_success, error: video_unlike_error }); } function video_unlike_success(json) { if (json.messageType == 'success') { $('#unlike').fadeOut(400).hide(); $('#like').fadeIn(400).show(); } else if(json.messageType == 'error') { $('.like_b').hide().fadeIn(400).html(json.message); } } function video_unlike_error() { alert('Ajax Error'); }


<div class="box" align="left"> <div onclick="video_like({$view.video_info.video_id})" id="like" {if $is_liked ne "no"}style="display:none"{/if}> <span class="like_b on_img js_link">Like</span> </div> <div onclick="video_unlike({$view.video_info.video_id})" id="unlike" {if $is_liked ne "yes"}style="display:none"{/if}> <span class="like_b over_img js_link">Unlike</span> </div> </div>

Remélem tudtok segíteni, köszönöm!
Mutasd a teljes hozzászólást!
if (json.messageType == 'success')

Ez a rész szerinted mit csinál?

$('#like').fadeOut(400).hide();
$('#unlike').fadeIn(400).show();

És ez? Véletlenül nem a "lájkolás" után fut le? Lehet ezt kéne módosítani?
Mutasd a teljes hozzászólást!

  • Rosszul fogalmaztam meg amit szerettem volna. Tehát adott az oldal ahol lehet lájkolni a videót. Miután klikkelünk, hogy Like, utána fadein bejön az, hogy Unlike. De ugyan ezen a lapon van egy div rész amin képekkel kivan listázva, hogy ki lájkolta eddig a videót, és én azt szeretném, hogy miután bejön az Unlike, akkor ez a div rész frissül anélkül, hogy az egész oldalt frissíteni kéne, és így látható lesz annak az illetőnek a lájkja (képe), ahol a többi lájkolónak a képei szerepelnek.
    Mutasd a teljes hozzászólást!
  • Mint ahogy Rendi írta, ott kellene újra töltened az adott div tartalmát.
    Számomra nem derült ki mi köze ennek a kérdésnek a php-hoz, de Rendi helyesen válaszolt és szerintem jár neki pont. :)
    Mutasd a teljes hozzászólást!
  • igen igaz, bár halál egyszerű volt a megoldás, a fadein után ennyit kellett becsúsztatni

    $('#reload').load('view_video.php #reload');

    köszönöm!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd