ik heb een site, waar je in kan loggen, en dan zie je je statistieken en users online enzo. Die staan allemaal in refresh.php die ik steeds oproep via AJAX.
Werkt allemaal prima. Maar wat niet wil lukken is dat je title veranderd als je een bericht hebt.
deze regel kun je vervangen door een aanroep van 'n functie die de script elementen extract, Als je van plan bent meer AJAX te gebruiken in je website en vaker scripts moet evallen e.d. raad ik je aan om een framework te gebruiken, als prototype, mootools of JQuery.
Anyway hier is de functie (Niet mijn eigen code!):
daar snap ik op het moment weinig van maar ik zal er morgen is naar kijken
offtopic: Ik wil dat die dingen in mn title komt te staan dat als je meerdere tabbladen open hebt, of mijn pagina geminimaliseerd, je alsnog makkelijk kan zien dat je een nieuw bericht hebt
ik zou je dan toch een framework aanraden. Zit een learning curve aan vast maar hiermee maak je je zelf het vele malen gemakkelijker, aangezien je script redelijk uitgebreid moet worden.
Zo kun je in prototype (dit is veruit de eenvoudigste om mee te beginnen, hoewel jQuery zeker een aanrader is!) eenvoudig AJAX requests in dienen, elementen editen etc.
hier een voorbeeldje uit gewerkt met het gewenste gedrag (download prototype):
a.html
oh nice, nog nooit een testje tegen prototype gezien, maar zo te zien moet ik overstappen naar Dojo.. Ben alleen weg van jQuery's chaining mogelijkheid
MAar goed zal jQuery ook nog adverteren dan(download):
en voorbeeld:
Ik heb main.php. Dat is het bestand waarin ik een banner,menu en een pagina die is aanklikt in laad (via get uit link).
Omdat ik het leuk vind, heb ik ajax gemaakt die de info die je vind in de banner op een refresh staan, ookwel refresh.php.
Ik heb een los .js bestand waar ik mn JS in heb, daar staat mn ajax in, en die functie word geladen met een body onLoad.
Als je een nieuw bericht krijgt, komt dat linksonder in de banner te staan. Nu wil ik graag ook dat er in de title komt te staan dar er een nieuw bericht is.
2 posts hierboven is code te vinden van wat ik op het moment heb (voor de late inhakers )
edit: Ik moet nu gaan, en kan pas zondag weer kijken, dus dan kijk ik of er slimme mensen (*slijm* ) zijn
// ipv .empty().append(data) kan je ook gebruiken .html(data)
Dit stukje code doet een AJAX getnaar refresh.php en update #refresh met de content, al je andere ajax code en je prototype code is dus neit meer nodig ;)
of om je 30000ms window.setInterval aan te passen voor jQuery:
ik heb alleen jQuery aanstaan, ik had al bbedacht dat het vast niet fijn was als ik dat alle2 aan zou hebben
Wat vraagjes:
1-je hebt nu .html. Dat is bij mij een php bestand die dingen uitvoert, ik ga dr een beetje van uit dat dat geen problemen oplevert...?
2-waar moet ik die call plaatsen? ik heb m nu zo:
3 function(data), moet ik van data mijn functie maken, of moet data data blijven?
edit: Ik heb nu die regel neergezet zoals hierboven staat in mn head, en mn eigen ajax uitgezet, maar nu gebeurd er niets meer...
edit2: een missing ), gemaakt, maar krijg nu deze error:
Citaat:
$("#refresh").php is not a function
$.get('refresh.php', function(data){ $("#refresh").php(data); });
sorry dat ik zoveel vraag, maar mn JS kennis is erg weinig, en dan is dit allemaal erg lastig
2. $(function() {}) is een shorthand notatie voor het document ready event (equivalent aan window.onload alleen zonder 't laden van de images).
window.setInterval ken je. Deze voert de functie die gepassed wordt uit na 30sec en dan om de 30 sec.
$.get('refresh.php', function(data){ }) is de AJAX call naar refresh.php en $("#refresh").html(data); doet een update met de data (responseText van je HttpRequest)
je kunt even proberen om de 30000 te veranderen naar 1000 o.i.d. zodat je geen halve minuut hoeft te wachten
.php is inderdaad geen functie .html(data) dien je te gebruiken dit is een functie van jQuery om HTML te parsen (incl. <script> e.d.)
hartstikke bedankt voor alle moeite en tijd! Het werkt nu (met een paar kinderfoutjes), echt heel erg bedankt. Nu kan ik ook makkelijk andere dingen ajaxen mocht ik ook de wilde behoefte hebben