18. januar 2010 - 10:57Der er
17 kommentarer og 1 løsning
Auto opdater tekst fra MySQL uden opdatering af hele siden?
Hej endnu engang alle Eksperter!
Er nået til det punkt i min "programmerings viden", hvor jeg er nødt til at vide om dette kan lade sig gøre på nogen ordenlig måde (og så har jeg brug for scriptet på min side).
Har tænkt på det utallige gange, og er sikker på at hvis man har programmeret i bare lidt tid, er man faldet over tanken at kunne opdaterer en sides indhold, uden at opdaterer hele siden.
Jeg har en tagwall/shoutbox som fungerer som så mange andre med at du skriver en besked, og så opdaterer siden, og hvis du ellers vil opdaterer, må du trykke "REFRESH".
Vil undgå denne "REFRESH" knap, og vil samtidigt undgå at hele siden reloader.
1. Fordi der er loading tid. 2. Fordi at hvis du skriver noget i tekstfeltet, forsvinder det ved REFRESH. 3. Fordi det ville være en FED funktion.
Jeg har lavet min tagwall i HTML, CSS, PHP og så MySQL til data'en i tagwallen.
Kan det lade sig gøre, og hvordan kan det lade sig gøre smartest?
Ps. Har forsøgt utallige gange at finde et brugbart script på google, men mine søge evner er ikke gode nok, og jeg har intet fundet som kan bruges.
Forresten.. Grunden til at spørgsmålet ligger i Javascript kategorien, er fordi jeg går ud fra dette nemmest kan løses med lidt javascript? Eller også er jeg helt galt på den..
du skal ud i noget AJAX, som primært er javascript og kan ved hjælp af asp eller php hente indhold fra database, xml, txt eller anden datakilde.
tag en tur på google, der findes et hav af guides og så kan du med fordel bruge ole's wrapper fra www.dengodekode.dk - da det er ret svært at finde noget ordentlig ajax-kode, især hvis man ikke ved hvad man skal se efter :)
Enten er jeg bare dårlig til at søge, eller også er der ikke nogen simpel måde at gøre det på.
Kan ikke finde noget simpelt i ajax hvor at man kan hente data fra en MySQL ned på siden dynamisk, uden at der enten følger 5 filer oveni med JS, eller at der følger en masse ekstra funktioner med som jeg slet ikke skal bruge.
Har aldrig givet mig tid til at sætte mig ind i Ajax, så kan ikke umiddelbart skille de ting ad jeg skal bruge, fra det jeg ikke skal bruge.
function xmlHttpObject(){ // Hvis XMLHttpRequest understøttes, så returner en ny instans if (window.XMLHttpRequest) return new XMLHttpRequest();
// Ellers - hvis ActiveX heller ikke understøttes, så returner null if (!window.ActiveXObject) return null;
// Ellers oprettes et array med de forskellige objekt versioner - nyeste først var a = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; var o = null; // For hver version ... for (var i=0,j=a.length; i<j; i++) { // Undgå at generere fejl, hvis versionen ikke genkendes try { // Hvis objektet kan oprettes, så returner det if ( o=new ActiveXObject(a[i]) ) return o; } catch(e){}; } // Hvis intet lykkedes, ryddes op og der returneres null return a = o = null; }
function ajaxConn(){ xmlHttp = new xmlHttpObject(); }
function ajaxSend(sUrl, sParams){ var params = sParams; var url = sUrl;
ajaxConn(); xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ if(xmlHttp.responseText=='success'){ //opdater feltet med indholdet fra xmlHttp.responseText }else{ alert("Der skete en fejl: "+xmlHttp.responseText); } } } ajaxSend(url, params); }
den sidste funktion er egentlig bare en samling af de 3 ovenstående funktioner, som henter det du vil og det er så tilgængeligt i xmlHttp.responseText. den første funktion er wrapperen fra dengodekode.dk. i ajaxConn opretter du så objektet fra wrapperen og i ajaxSend sender du informationerne til din php-side (i dette tilfælde - det kunne også være asp, eller anden serverside-sprog) med de nødvendige parametre.
ajax.php bliver sendt med som parameter og er navnet på den side, som serverer det data du skal bruge - dvs at den skal hente data fra databasen og skrive det ud til skærmen. et eksempel kunne være:
<?php
echo $_POST['fornavn']." - ".$_POST['efternavn'];
?>
hvor indholdet af xmlhttp.responseText vil være "Anders - Jensen"
I får lige mine 2 sider, hvis andre skulle være lige så blanke på området som mig, og falder over denne side. Har desuden tilføjet en knap (HENT), der loader ajax.php når man trykker på den. og endnu en knap (START), der gør så den loader siden med et interval på 1 sekund. Og en sidste knap (SLUT), som stopper med at loade siden hvert sekund.
Her er min index.php:
<html> <head> <script type="text/javascript"> function xmlHttpObject(){ // Hvis XMLHttpRequest understøttes, så returner en ny instans if (window.XMLHttpRequest) return new XMLHttpRequest();
// Ellers - hvis ActiveX heller ikke understøttes, så returner null if (!window.ActiveXObject) return null;
// Ellers oprettes et array med de forskellige objekt versioner - nyeste først var a = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; var o = null; // For hver version ... for (var i=0,j=a.length; i<j; i++) { // Undgå at generere fejl, hvis versionen ikke genkendes try { // Hvis objektet kan oprettes, så returner det if ( o=new ActiveXObject(a[i]) ) return o; } catch(e){}; } // Hvis intet lykkedes, ryddes op og der returneres null return a = o = null; }
function ajaxConn(){ xmlHttp = new xmlHttpObject(); }
function ajaxSend(sUrl, sParams){ var params = sParams; var url = sUrl;
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.