, skabe en twitter som "læs mere" dims,,,,, 7,,,,,,,,, 8,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, twitter og æble - app butikken en glimrende teknik for lastning af flere informationer, du knipser forbindelsen og friske produkter kan være på skærmen.denne pædagogiske lærer dig at bruge ajax, css, javascript, json, folkesundhedsprogrammet og html til at skabe denne magi.denne pædagogiske også skal omfatte både jquery og mootools versioner af manuskriptet.,,,,,, forudsætninger, er der en række antagelser, og bemærker, at vi går ind i dette system med:,, - - skal løbe php5, således at vi kan bruge php5 er json funktioner. vi vil trække databasen fortegnelser fra en wordpress "post" mysql tabel.hvad er godt ved den kode, der er, at man kan anvende det med nogen database, alt, hvad du skal gøre, er at ændre mysql forespørgsel og json egenskaber, der anvendes af jquery eller mootools. kunden må støtte javascript. vi bruger mootools 1.2.3 kerne og mere vedrørende.hvis jquery er den foretrukne ramme, jquery 1.3.2 og ariel flesler er scrollto stik af. denne lektion vil være en forklaring på mootools javascript.mens jquery, syntaks adskiller sig fra mootools, skønheden i det moderne javascript rammer er, at de afviger hovedsagelig i syntaks, ikke i logik.den jquery javascript gives nedenfor., handlingen, her er den række af begivenheder, der finder sted i vores smarte dims:,, side belastninger, normalt med et foreløbigt beløb af stillinger, hvoraf det fremgik, at brugeren klik "læs mere" element i bunden af listen, en ajax /json anmodning vil ild og fandt en bestemt andel af nye stillinger, vores jquery /mootools javascript får resultatet og opbygge en række nye elementer, der indeholder json http: //oplysninger om hvert enkelt element vil glide ind i den dims er beholder element, når alle elementer er blevet lastet til den side, vinduet vil rulle ned til de første nye punkt, skylle og gentage.,,,,,,, trin 1: folkesundhedsprogrammet /mysql, det første skridt er at beslutte, hvor mange stillinger, skal være installeret i løbet afden første side belastning.siden vores dims vil huske, hvor mange stillinger blev lastet i løbet af den sidste last (i tilfælde af, at en bruger besøger en anden side og kommer tilbage, vi skal bruge mødet., * (* /session_start(). $number_of_posts = 5; //5 stillinger belastning på et tidspunkt $_session ['posts_start '] = $_session ['posts_start']?$_session ['posts_start ']: $number_of_posts; //, hvor vi skal starte, ovennævnte kode snippet indeholder alle de "(" indhold, at vi har brug for.nu skal vi skabe et php funktion, der forbinder vores database, tager flere plader, og returnerer deres indhold i json format: /* tag ting * /funktion get_posts ($start = 0, $number_of_posts = 5) {* tilslutning til og udvælge db * $forbindelse = mysql_connect ('localhost ",'username,'password); //hostname, brugernavn, kodeord mysql_select_db ('davidwalsh83_blog, $forbindelse) /* skabe stillinger array * $stillinger = array(); /* få stillinger * $forespørgsel =" vælg post_title, post_content, post_name, id - kort fra wp_posts, hvor post_status = "offentliggøre" for post_date desc begrænse $start, $number_of_posts "$resultat = mysql_query ($søgning) /* for hver post.* /mens ($ro = mysql_fetch_assoc ($resultat) {*, der er fastsat efter indhold svarer til første afsnit. "forpremiere" regelmæssigt udtryk * /preg_match ("/< p > (*) < //p > /" $række ['post_content "$tændstikker); $række ['post_content '] = strip_tags ($tændstikker [1]) /* tilføj det til stillinger array * $stillinger [] = $række.} /* returnerer de stillinger i json format * /tilbage json_encode ($stillinger)} ovennævnte php, indeholder en meget enkel regelmæssigt udtryk, der tager det første punkt i min post indhold.siden det første afsnit af de fleste blog tjener som en indledning til resten af det indhold, vi kan antage, at punkt server et dejligt billede af post, når de ovenfor. funktion er klar, skal vi skabe vores ajax anmodning til at lytte.vi får at vide, at nogen har sendt en ajax anmodning, hvis $_get ['start '] variabel er fastsat i anmodningen, url., hvis anmodningen er mærkede, vi tager fem stillinger via vores get_posts() funktion og echo deres json ud.når vi har produktionen de nye stillinger i json format, sparer vi antallet af poster, at brugeren har anmodet om og dræbe manuskriptet, som vist nedenfor., * belastning af ting * /hvis (isset ($_get ['start ']) {* spytter ud stillinger inden for det ønskede område * /echo get_posts ($_get ['start "$_get ['desiredposts']) /* red brugerens" sted ", så at sige * $_session ['posts_start'] + = $_get ['desiredposts'] /* dræbe side * /die();}, det er server-side kode for vores widget.enkelt, ikke?,,,,,, trin 2: http: //, er der ikke meget rå html til denne dims i første omgang.vi vil skabe en vigtigste widget beholder.i den dims beholder vil blive en stillinger, indpakning og vores "belastning" element, som vil tjener som et virtuelt, som udløser lastning af mere indhold. <!- dims html starter her... > < div id = "stillinger beholder" > <!- stillinger indenfor denne div. > < div id = "post" > < /div > <!- læs mere "sammenhæng" - > < div id = "belastning" > belastning mere < /div > < /div > <!- dims html ender her... >, selvom vi ikke indsætte individuel post elementer, men det er vigtigt at kende de html struktur efter div elementer, som vil blive indsprøjtet i de stillinger, indpakning:, < div klasse = "post" > < en href = "(posturl}" klasse = "post" > (post_title} < /a > < p - klassen = "post - indhold" > (post_content} < br /> < en href = "(posturl}" klasse = "post" > og læs mere... < /a > < /p > < /div >,,,,,, trin 3: css, tid til at tilføje nogle nødblus til vores widget.det er gratis at format, den dims er elementer, som du gerne ville.jeg har valgt at tilføje en karikatur på venstrefløjen og den efterfølgende afsnit, indhold, og forbindelsen til højre.vi bliver nødt til at tilføje css for statisk html elementer og javascript genereret elementer, som fremgår af det følgende.stillinger beholder, (bredde: 400px; grænse: 1px fastccc; - webkit grænse radius: 10px; - moz grænse radius: 10px;} {polstring. post: 5px 10px 5px 100px; min højde: 65px; grænseoverskridende nederst: 1px fastccc; baggrund: url (dwloadmore. men heller ikke dér er menneskene sikre 5px 5px ikke gentages; markør: pointer.}. post: den {baggrund farve: lightblue;} a.post-title {skrifttype vægt: dristige og skriftstørrelse: 12px; tekst): ingen;} a.post-title: svævning (tekst): understrege, farve:΄} a.post-more (farve:΄} p.post-content (skriftstørrelse: 10px; linje højde: 17px; polstring nederst: 0}belastning mere {baggrund farve:eee farve:ϧ skrifttype vægt: dristige; text tilpasse: center; polstring: 10px 0; markør: pointer.}belastning: svæv (farve:ʚ}, en ekstra css klasse vil vi skabe kaldes "aktiver", som vi vil vise, når en ajax anmodning begynder og gemmer sig, når anmodningen fuldfører.,. aktivér {baggrund: url (/dw indhold /loadmorespinner. gif) 140px 9px ikke gentageeee},,,,,, trin 4: mootools javascript, vores mootools javascript vil få magien ske.vi skal bruge en lukning mønster, skal indeholde de mootools kode som bedste praksis: //sikkerhed lukning (funktion ($) (//, hvor dom er klar...vindue. addevent ('domready, function() {/* javascript vil være her * /})}) (dokument. id), når den dom er klar, vi giver den første javascript indstillinger.bemærker, at en af de indstillinger, initialposts, indeholder json for det første parti af stillinger, som skal vise, hvor side belastninger.vi også definere variablerne for, hvor mange stillinger vi belastning i starten, og antallet af stillinger til tag i hver ajax anmodning. //indstillinger på toppen var domain = http: //davidwalsh. navn /; //dit område eller fortegnelse vej går her var initialposts = <?php echo get_posts (0, $_session ['posts_start ']).> var start = < php echo $_session ['posts_start ']?> var desiredposts = <?php echo $number_of_posts;?>,,,,, når vores indstillinger er på plads, at vi definerer en funktion til at håndtere json, vi modtager, på side belastning samt via fremtidige ajax anmodninger.for hver post i json, vi..., skabe en post - url variable, som vi bruger lidt senere i loop, skabe en div "post" element, som vil indeholde de efterfølgende afsnit, indhold og sammenhæng (i det format, der er beskrevet ovenfor), må det nyligt oprettede "post" element i stillinger - papir, skabe en fx. til genstand for nye "post" element, så vi kan skjule element på stedet, så lad den glide ind i lyset, rulle vinduet ned til den første nytilførte post, her er mootools javascript kode, der får det gjort. //- funktion, der skaber stillinger var posthandler = funktion (postsjson) (postsjson. hver (funktion (post, jeg) (//post - url var posturl = "+" + post.post_name; //skabe html "post" element var postdiv = nye element ('div, { \t\t\t'class': 'post', \t\t\tevents: { \t\t\t\t//click event that makes the entire DIV clickable \t\t\t\tclick: function() { \t\t\t\t\twindow.location = postURL; \t\t\t\t} \t\t\t}, \t\t\tid: 'post-' + post.ID, \t\t\thtml: '<a href="' + postURL + '" class="post-title">' + post.post_title + '</a><p class="post-content">' + post.post_content + '<br /><a href="' + postURL + '" class="post-more">Read more...</a></p>' \t\t}); \t\t//inject into the container \t\tpostDiv.inject($('posts')); \t\t//create the Fx Slider \t\tvar fx = new Fx.Slide(postDiv).hide().slideIn(); \t\t//scroll to first NEW item \t\tif(i == 0) { \t\t\tvar scroll = function() { \t\t\t\tnew Fx.Scroll(window).toElement($('post-' + post.ID)); \t\t\t}; \t\t\tscroll.delay(300); /giv så vidt kan ske}})},,,,,, at vores posthandler funktion er fastlagt, er det tid til at håndtere den oprindelige json række elementer. //sted den oprindelige stillinger i den side posthandler (initialposts), næste, skaber vi et par variabler til opbevaring af værdien vores ajax anmodning og holde de værdier for folkesundhedsprogrammet møde starter værdi, antallet af stillinger til at tage på en gang, og "belastning" element., var start = <?php echo $_session ['posts_start ']?> var desiredposts = <?php echo $number_of_posts;?> var loadmore = $('load-more "), til at skære ned på hukommelse anvendelse, vil vi skabe vores request.json formål uden for den begivenhed, som vi snart vil tilføje klik.den request.json objekt er lang tid, men det er faktisk ret enkelt.bryde det ned, skaber vi anmodningen genstand med grundlæggende indstillinger... var anmodning = nye anmodning. json ((url: belastning. folkesundhedsprogrammet, //ajax manuskript... samme manuskript metode: "få link:" tilbagekalde ", nocache: det er rigtigt, //flere indstillinger, også kommer... en kanrekvireres parameter, som tilføjer vores" aktiver "css klasse" læs mere "clickable element og ændre" belastning "element er teksten til" - - "..., kanrekvireres: function() (//tilføje aktivere klasse og ændre det budskab, loadmore. addclass ('activate '). der'text,'loading -");}, tilføje en onsuccess parameter, som nulstiller "belastning" element tekst, holder styr på den nuværende start sted for at tage de fremtidige elementer, og klare json reaktion på samme måde, som vi gjorde med det første posts..., onsuccess: funktion (responsejson) (//nulstille det budskab, loadmore. sæt ('text,'load mere "); //forøgelse af den aktuelle status start + = desiredposts; //add i nye stillinger posthandler (responsejson)}, tilføje en onfailure funktion at ajourføre" loadmore "tekst ved svigt..., onfailure: function() (//nulstille det budskab, loadmore. sæt ('text,'oops!prøv igen. ')), og endelig, at tilføje en oncomplete funktion, som fjerner de spinner, når anmodningen er fuldstændig uafhængigt af succes eller fiasko. oncomplete: function() (//fjerne spinner loadmore. removeclass ('activate)}, det sidste skridt er at tilføje klik begivenhed "belastning" element.ved klik gør vi ajax anmodning, og alt det arbejde, ovenfor bliver udløst.succes!//tilføje "belastning" klik begivenhed loadmore. addevent ('click, function() (//begynde ajax forsøg på anmodning. send ((data: {'start: start,'desiredposts ": desiredposts}})}),,,,, mootools fuldstændig kode //sikkerhed er afsluttet (funktion ($) (//domready begivenhed vindue. addevent ('domready, function() (//indstillinger på toppen var domain = http: ///////////////davidwalsh. navn, var initialposts = <?php echo get_posts (0, $_session ['posts_start ']).>; \t\t\t//function that creates the posts \t\t\tvar postHandler = function(postsJSON) { \t\t\t\tpostsJSON.each(function(post,i) { \t\t\t\t\t//post url \t\t\t\t\tvar postURL = '' + domain + post.post_name; \t\t\t\t\t//create the HTML \t\t\t\t\tvar postDiv = new Element('div',{ \t\t\t\t\t\t'class': 'post', \t\t\t\t\t\tevents: { \t\t\t\t\t\t\tclick: function() { \t\t\t\t\t\t\t\twindow.location = postURL; \t\t\t\t\t\t\t} \t\t\t\t\t\t}, \t\t\t\t\t\tid: 'post-' + post.ID, \t\t\t\t\t\thtml: '<a href="' + postURL + '" class="post-title">' + post.post_title + '</a><p class="post-content">' + post.post_content + '<br /><a href="' + postURL + '" class="post-more">Read more...</a></p>' \t\t\t\t\t}); \t\t\t\t\t//inject into the container \t\t\t\t\tpostDiv.inject($('posts')); \t\t\t\t\t//skabe fx slider var fx = nye fx. - (postdiv). hide(). slidein(); //rullen til første punkt på dagsordenen, hvis (i = = 0) (var - rullen = function() (nye fx. skriftrulle (vindue). toelement ($('post - + post. id)} rullen. forsinkelse (300); //tid så vidt kan ske}})}; //sted den oprindelige stillinger i den side posthandler (initialposts); //et par variabler var start = <?php echo $_session ['posts_start ']?> var desiredposts = <?php echo $number_of_posts;?> var loadmore = $('load-more) var anmodning = nye anmodning. json ((url: belastning. folkesundhedsprogrammet, //ajax manuskript... samme metode: "få link:" tilbagekalde ", nocache: det er rigtigt, kanrekvireres: function() (//tilføje aktivere klasse - og ændre det budskab, loadmore. addclass ('activate '). der'text,'loading...)}, onsuccess: funktion (responsejson) (//nulstille det budskab, loadmore. sæt ('text,'load mere"); //forøgelse af den aktuelle status start + = desiredposts; //add i nye stillinger posthandler (responsejson)}, onfailure: function() (//nulstille det budskab, loadmore. sæt ('text,'oops!prøv igen. ");}, oncomplete: function() (//fjerne spinner loadmore. removeclass ('activate)}}); //add" læs mere "klik begivenhed loadmore. addevent ('click, function() (//begynde ajax forsøg på anmodning. send ((data: {'start" - start,'desiredposts ": desiredposts}}))))))) (dokument. id), jquery udgave, hvis du foretrækker det jquery javascript ramme, det er din heldige dag, her er jquery version: //, hvor dom er klar $(dokument). klar. (function() (//indstillinger på toppen var domain = http: ///////////////davidwalsh. navn, var initialposts = <?php echo get_posts (0, $_session ['posts_start ']).>; \t\t//function that creates posts \t\tvar postHandler = function(postsJSON) { \t\t\t$.each(postsJSON,function(i,post) { \t\t\t\t//post url \t\t\t\tvar postURL = '' + domain + post.post_name; \t\t\t\tvar id = 'post-' + post.ID; \t\t\t\t//create the HTML \t\t\t\t$('<div></div>') \t\t\t\t.addClass('post') \t\t\t\t.attr('id',id) \t\t\t\t//generate the HTML \t\t\t\t.html('<a href="' + postURL + '" class="post-title">' + post.post_title + '</a><p class="post-content">' + post.post_content + '<br /><a href="' + postURL + '" class="post-more">Read more...</a></p>') \t\t\t\t.click(function() { \t\t\t\t\twindow.location = postURL; \t\t\t\t}) \t\t\t\t//inject into the container \t\t\t\t.appendTo($('#posts')) \t\t\t\t.hide() \t\t\t\t.slideDown(250, function() (hvis (i = = 0) {%. scrollto ($('div+ id))))))); //sted den oprindelige stillinger i den side posthandler (initialposts); //første, pas på "belastning" //da - klik på "belastning" div var start = <?php echo $_session ['posts_start ']?> var desiredposts = <?php echo $number_of_posts;?> var loadmore = $('# belastning mere "); //belastning tilfælde /ajax loadmore. klik (function() (//tilføje aktivere klasse og ændre det budskab, loadmore. addclass ('activate). tekst ('loading..."); //begynde ajax forsøg på $. ajax ({url: http: //' belastning. folkesundhedsprogrammet, data: {'start: start,'desiredposts ": desiredposts}, type:" gå ", datatype:" json, cache: falske succes: funktion (responsejson) (//nulstille det budskab, loadmore. tekst ('load mere "); //forøgelse af den nuværende status start + = desiredposts; //add i nye stillinger posthandler (responsejson)}, //fiasko klasse fejl: function() (//nulstille det budskab, loadmore. tekst ('oops!prøv igen. ");}, //komplette omstændigheder afslutte: function() (//fjerne spinner loadmore. removeclass ('activate))))))), mootools og jquery versioner er præcis den samme logik med forskellige syntaks!missionen fuldført!gennemførelse af denne dims på din hjemmeside er en god måde at tilføje dynamik og kreativitet på deres websted.jeg ser frem til at se din dims!har spørgsmål, forslag til forbedringer.efter dem nedenunder.,, følger os på twitter, eller abonnere på nettuts rss foder til mere daglige web - udvikling tuts og genstande,.,,,
skabe en twitter
Previous:codeigniter fra bunden: dag 2