Avatar billede kasbas91 Nybegynder
03. november 2010 - 20:48 Der er 10 kommentarer og
1 løsning

Hej jeg tænkte på om man kunne opdatere med jquery når noget var sat ind i databasen ...

Hej eksperten.dk

Hej jeg tænkte på om man kunne opdatere med jquery når noget var sat ind i databasen, uden at man skal refresh selve siden...

Som i kan se her på:
http://empresa.prowdesign.dk/people/profile.php

Har jeg under det billede et link der hedder:

Send venneanmodning.

Og oppe i toppen af siden der er et user icon, hvor venne anmodningerne kommer ind, den vil jeg gerne have at den selv opdatere sig selv, når man trykker på Send venneanmodning.

Hvis i forstår mig...

Tak... ;P
Avatar billede bkp Nybegynder
03. november 2010 - 21:59 #1
Det kan du sagtens, kig lidt nærmere på Ajax delen i jQuery dokumentationen og tjek eventuelt denne serie:
http://blog.themeforest.net/screencasts/jquery-for-absolute-beginners-video-series/

Jeg vil anbefale at se dem alle, men nok især lægge mærke til afsnit 10 og 13
Avatar billede bkp Nybegynder
03. november 2010 - 22:05 #2
Hvis det bare er en simpel opdatering af et område på din side så se lige denne guide:

http://www.eksperten.dk/guide/1385
Avatar billede kasbas91 Nybegynder
04. november 2010 - 05:59 #3
Det er vel egenlig ikke load() jeg skal have fat i.

Den loader jo bare en side eller flere, via links...

Den jeg vil have skal selv opdatere sig selv, uden at man gør

noget som helst. Lidt ligesom på facebook, med deres

venneanmodninger osv... ;P
Avatar billede bkp Nybegynder
04. november 2010 - 08:46 #4
Ok havde vist misforstået dit spørgsmål, men den teknik du skal bruge afhænger af om du kan etablere en service på serveren som din det lokale script kan abonere på, prøv f.eks. at tjekke Socket.IO:
http://socket.io/

Alternativt kan du køre en timer som med et fast interval tjekker via Ajax om der er sket noget, her har jeg tidligere brugt denne plugin til jQuery:
http://jquery.offput.ca/timers/
http://plugins.jquery.com/project/timers

Du kan også selv styre det uden plugin, se mere her:
http://stackoverflow.com/questions/2295049/jquery-timer-how-do-i-do-this
Avatar billede kasbas91 Nybegynder
04. november 2010 - 11:07 #5
Jaa kan man få den til at opdatere hver sekund fra databasen eller sådan noget :)
Avatar billede bkp Nybegynder
04. november 2010 - 11:30 #6
Yes, tjek denne: (men er det ikke lidt overkill)

everyTime(interval : Integer | String, [label = interval : String], fn : Function, [times = 0 : Integer])

everyTime will add the defined function (fn) as a timed event to run at a given time interval (interval) for a given number of times (times). If times is set to 0, the number of times the method is called is unbounded. A label is also set for the given timed event either to the provided string (label) or to the string representation of the interval provided. Additionally, the interval can be defined by using a string such as "3s" for 3 seconds.

F.eks:
$(document).everyTime('5s', function(i) {
  // her kommer din ajax kode;
});


http://jquery.offput.ca/timers/
Avatar billede kasbas91 Nybegynder
04. november 2010 - 12:26 #7
Men jeg syntes bare ikke jeg kan få det til at virke.:

Min kode er her: Det er nok mig der laver fejl..



$(document).everyTime('5s', function(i) {
    $('form a#SendVenneAnmodning').click(function(){ // Det er det link, som vi har pŒ vores profil side, som folk kan sende en venneanmodning med.
        var userid = $('#userid').val();
        var friendid = $('#friendid').val();
        var dataString = 'userid=' + userid + '&friendid=' + friendid;
       
        $.ajax({
            type: "POST",
            url: "/lib/controllers/sendvenneanmodning.php",
            data: dataString,
            cache: false,
            success: function(){
              $('#venneloader').append("<img src='/lib/images/ajax-loader.gif' height='16' width='16' style='height:16px; width: 16px; -moz-box-shadow: none;'>");
              alert('Venneanmodning er sendt.');
              $('#venneloader').hide('2000');
            },
            error: function(){
              alert('failure');
            }
        });
    });
});

Avatar billede kasbas91 Nybegynder
04. november 2010 - 12:33 #8
Hov min fejl...

Det var denne her kode jeg mente.. :



// Dette stykke script er til min toolbox. 
$(document).everyTime('5s', function(i) {   
    $('#EmFriend').click(function(e) {
        e.stopPropagation();
        if(!$("#EmFriendrequests").is(":visible")) {
            hidePopups();
            $("#EmFriendrequests").show();
            $("#EmFriendrequests").load("friendrequests.php");
            $("#EmFriend").addClass("EmFriendrequestsBtnToggler");
            state = true;
        }else {
            $("#EmFriend").removeClass("EmFriendrequestsBtnToggler");
            $('#EmFriendrequests').hide();
            state = false;
        }
             
    });
});

Avatar billede kasbas91 Nybegynder
04. november 2010 - 13:36 #9
Er det alt for vildt at opdatere hver sekund eller 5 sekunder.

Men det er bare fordi så tager det fx, 1 eller 5 sekunder at få vist min counter.. På min side... Og det kunne jeg så godt tænke mig at den var vist hele tiden.

Du kan se den her på:

http://empresa.prowdesign.dk/people/profile.php



var auto_refresh = setInterval(
function (){
        $('.EmPack_FriendCount').load('friendrequests.count.php').show();
}, 5000);

Avatar billede kasbas91 Nybegynder
04. november 2010 - 13:38 #10
Har løst det, og mange tak for hjælpen....
Avatar billede bkp Nybegynder
04. november 2010 - 13:45 #11
Var så lidt :-)

Om det er for tit du opdaterer, afgører du selvfølgelig, men det skaber jo trafik, og et kald til din database hver gang, og det bør man ikke gøre alt for ofte (efter min mening).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester