Avatar billede flol Nybegynder
20. februar 2007 - 11:08 Der er 22 kommentarer og
1 løsning

Refresh side, uden klik og blink?

Hej eksperter!

Er der nogen, der kan hjælpe mig med at få en side til at opdater uden blink og klik ? :D
Avatar billede margitbork Nybegynder
20. februar 2007 - 11:10 #1
Jeg har hørt om google web toolbox, hvor man vist kun opdaterer relevante felter, jeg har dog ikke selv prøvet det.
Avatar billede mcgoat Nybegynder
20. februar 2007 - 11:10 #2
I forhold til din tidligere post med at opdatere siden når der var noget nyt i databasen, så kan du ikke bruge javascript :(
Avatar billede anderseiler Nybegynder
20. februar 2007 - 11:15 #3
Igen... Brug AJAX... Det fungerer til det :) (selvom jeg ikke ved en flyvende hat om AJAX, så har jeg nogle kammerarter som har brugt det til noget ligende.. Så ved det virker til det)..
Avatar billede flol Nybegynder
20. februar 2007 - 11:16 #4
nej okay men det søger jeg heller ikke så meget, ville være fedt, hvis bare jeg kunne få min side til at opdater uden blink og klik lyde.
Avatar billede flol Nybegynder
20. februar 2007 - 11:25 #5
hvor skal jeg poste for at få hjælp til ajax?
Avatar billede hmann Nybegynder
20. februar 2007 - 11:39 #6
du læser bare denne tutorial:
http://www.w3schools.com/ajax/default.asp

;-)

og inden længe kan du ved hjælp af AJAX opdatere din side uden at den bliver refresh'et
Avatar billede flol Nybegynder
20. februar 2007 - 14:36 #7
hmm, kan slet ikke finde det jeg skal bruge under linket, er der ikke nogen der kan give mig et eks.?
har ikke så meget styr på javascript/ajax, så kan ikke lige udpege hvor refresh funktionen er :/
Avatar billede hmann Nybegynder
20. februar 2007 - 14:44 #8
det er jo netop sådan at der IKKE er en direkte refresh funktion
du skal bruge ajax til at hente "opdateringen" og så vises den så snart den er klar, uden klik, blink, refresh osv
Avatar billede hmann Nybegynder
20. februar 2007 - 14:45 #9
kan du ikke beskrive lidt nærmere hvad det er du vil - ellers er det lidt svært at hjælpe
Avatar billede hmann Nybegynder
20. februar 2007 - 14:48 #10
er det PHP så kan jeg godt give dig et hjemmelavet mini-eksempel?
Avatar billede flol Nybegynder
20. februar 2007 - 14:50 #11
jo selfølgelig:

er ved at lave en chat, eller har lavet en chat, men det ser ikke så smart ud at siden blinker og giver et klik hvergang den opdater, så tænkte jeg at dette må kunne laves bedre, så den ikke gir et klik og blinker!

chatten er bygget op i php og mysql
Avatar billede hmann Nybegynder
20. februar 2007 - 15:10 #12
ok prøv noget i den her stil..

lav en fil der hedder "test.php" med følgende indhold:
----------------------
<html>
<head>
<script src='funktioner.js'></script>
</head>

<body>

<form>
Indtast navn:
<input type='text' id='txt1' onblur='showHint(this.value)'>
</form>

<table>
<tr>
<td>
resultatet kommer herunder:
</td>
</tr>
<tr>
<td id='txtHint'>
</td>
</tr>

</table>

</body>
</html>
----------------------

det der sker er, at når du forlader (onblur) inputfeltet "txt1", så kaldes javascript funktionen showhint (funktionen ligger i filen funktioner.js)


lav filen funktioner.js med følgende indhold:
---------------------------
var xmlHttp

function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML=""
return
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="findnavn.php"
url=url+"?navn="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}


function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}


function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

---------------------------

det du skal lægge mærke til i denne fil er sektionen

var url="findnavn.php"
url=url+"?navn="+str

dvs at når showhint funktionen kaldes, så kaldes "findnavn.php"..
faktisk kaldes findnavn.php?navn=xxxx
hvor xxxx = det du har indtastet i feltet

lav nu din findnavn.php fil med et indhold i stil med:
-------------------------------

$navn = $_GET["navn"];

slå op i din database med $navn-variablen
du må i forvejen have noget kode til at slå op i mysql

if ($result == 1)
{
  echo "navnet findes...";

}
else
{
  echo "navnet findes ikke!";

}
-------------------------------



ved godt det ikke har noget med chatten at gøre men det var for at give et eksempel på AJAX.. du har altså en .php-fil hvor du på en eller anden "action" kalder en javascript funktion.. denne funktion kalder en anden .php-fil i baggrunden og returnerer resultatet.. uden din side er blevet refreshet.. den kommer med svaret så snart det er klart..

håber du får noget ud af det - prøv at få mit eksempel til at fungere først.. ellers spørg.. har ikke så meget tid idag, men skal nok vende tilbage og tjekke op på hvordan det går :)
Avatar billede olebole Juniormester
20. februar 2007 - 15:34 #13
<ole>

w3schools.com's tutorial om AJAX har stort set ikke noget med AJAX at gøre, men er blot endnu et eksempel på, at det site er fyldt med mangler, udeladelser og fejl!

I AJAX udveksler man rå data mellem klient og server. Når data sendes tilbage til klienten, er de formateret i XML eller JSON - men _ikke_ i HTML. HTML-formateringen foretages i stedet med DOM på klienten.

Brug af innerHTML bør af mange grunde absolut frarådes. Herunder:
1) property'en har aldrig været valid i nogen standard
2) property'en er ubrugelig under XHTML
3) når innerHTML på et element sættes, overskrives DOM'en i det påglædende element, hvorved evt. JS-referencer til elementer går tabt
4) property'en er buggy/ustabil i FF

/mvh
</bole>
Avatar billede hmann Nybegynder
20. februar 2007 - 15:48 #14
er selv ny når det kommer til AJAX..
ovenstående er lidt en resultat af at jeg stod og manglede noget kode og fandt w3schools tutorial brugbar og fik løst mit problem..

skal ikke gøre mig klog på om det er måden at gøre tingene på eller ej og hvilke problemer der kan være ved at bruge det på den måde..

men tak for input'et ole - rart at vide at man ikke kan sluge w3schools "ord" råt
Avatar billede hmann Nybegynder
20. februar 2007 - 15:50 #15
olebole> kan du evt. smide et par links til nogle gode ajax tutorials ?
Avatar billede olebole Juniormester
20. februar 2007 - 15:58 #16
Du kan evt. begynde her:
    http://developer.mozilla.org/en/docs/AJAX

- ikke mindst en artikel af ham, der navngav teknikken er et godt sted at starte:
    http://www.adaptivepath.com/publications/essays/archives/000385.php
Avatar billede olebole Juniormester
20. februar 2007 - 16:02 #17
- og dette site om JSON er også meget god:
    http://www.json.org/

- og i den forbindelse er min egen artikel om JS-arrays og -objekter nok også aktuel:
    http://www.eksperten.dk/artikler/227

Brugeren windscape har også skrevet en udmærket lille artikel om JSON - og viser et (meget) simpelt AJAX-eksempel:
    http://www.eksperten.dk/artikler/1053
Avatar billede hmann Nybegynder
20. februar 2007 - 16:10 #18
takker.. kigger på det - altid bedst at komme "rigtigt" fra start..
Avatar billede flol Nybegynder
06. marts 2007 - 09:44 #19
er der ikke en simpel måde at gøre det på?
Avatar billede olebole Juniormester
07. marts 2007 - 14:50 #20
Jo ... med AJAX og JSON  =)
Avatar billede flol Nybegynder
08. marts 2007 - 10:13 #21
:P
JSON ?
Avatar billede roenving Novice
08. marts 2007 - 13:53 #22
JavaScript Object Notation
Avatar billede olebole Juniormester
09. marts 2007 - 13:04 #23
flol >> Klik på linkene i min kommentar (20/02-2007 16:02:29) ... det var derofr, jeg skrev dem  ;o)
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