Deze werkt perfect. Maar ik zit met het volgende probleem. Ik kies hierin eerst een bepaalde waarde. Deze waarde laat dan diverse formuliervelden zien. Nu treden de volgende problemen op waar ik ook geen oplossing voor vind:
- Wanneer ik de pagina aanpas in de code moet ik de site eerst sluiten voordat ik een verandering kan zien wanneer ik de geselecteerde waarde al eens heb bekeken. Is het mogelijk dat hij gewoon 'up to date' blijft zonder dat ik eerst de site moet sluiten?
- Wanneer het formulier is ingevuld en ik keer (via terug naar vorige pagina) weer terug naar het formulier dan is het formulier weer gesloten en moet ik eerst de juiste waarde weer selecteren. En daarna alles weer opnieuw ingeven. Hoe kan ik er voor zorgen dat de pagina en de ingevulde waarden onthouden blijven?
Het eerste ligt denk aan de cache van de browser; Dit kan je oplossen door in de header te specifieren dat deze geen cache aanvaardt:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
en
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
zorgen hiervoor.
Nu het tweede probleem: "terug naar vorige pagina", is dat een link op je site?, anders kan je ervoor zorgen dat hij naar de vorige pagina gaat en de ingevulde gegevens post, hierna kan je deze in een cookie plaatsen via php.
Indien je echter de terugknop in de browser bedoelt, ga je met JavaScript dit moeten herkennen, en juist voor het sluiten nog de gegevens meegeven. Maar dit lijkt mij al veel ingewikkelder.
Nee nu ga ik via de browser terug. Maar wil wel een een link zetten op de site. Cookies heb ik niet aan gedacht. Zal deze methode daarop ga toepassen. Blijft dan ook het opengeklapte formulier open? Nu is het zo dat hij 'gesloten' is en ik de waarde nog eens moet selecteren zodat hij weer uitklapt (zeg maar).
het javascriptevent dat bekijkt wanneer je de pagina verlaat is onUnload. In dit event kan je nog de gegevens in postvariabeles of cookies plaatsen. Zelf heb ik dit event nog niet gebruikt, maar het lijkt mij mogelijk.
Dit is je XMLHttpRequest (of active X object voor oude versies van IE), deze functie maakt er 1 aan, en zou geen problemen mogen geven.
Maar kan je je volledige php-file niet eens uploaden. Werk je bvb met sessions? hoe ziet je sitestructuur er uit, hebben alle pagina's de juiste headers...?
BTW dit gaat enkel over het eerste probleem.
Het tweede probleem moet je oplossen met het onUnload event, tijdens dit event verzamel je de gegevens van de gebruiker (in JavaScript) en schrijf je deze weg naar een Cookie bvb (dewelke maar enkele uren/dagen geldig is - het onthouden van de formuliern, gedurende een jaar is misschien overdreven ). Bij het openen van de pagina, kijk je of er iets in de cookie staat, en schrijf je deze naar de respectievelijke inputvelden.
Als ik het goed voorheb is dit het probleem:
- je verandert iets in de code bvb in index.php
- je herlaadt de pagina (refresh)
- de verandering is niet zichtbaar
Indien je echter het volgende doet:
- je verandert iets in de code bvb in index.php
- je herlaadt de pagina (browser sluiten en pagina laden)
- de verandering is wel zichtbaar
Ik kan mij niet van de indruk ontdoen dat dit ligt aan de cache van de browser.
Is de cache van uw browser volledig leeg? zijn de instellingen van je browser goed ingesteld???
De aanpassing van de headers (zie 1 van mijn antwoorden hierboven) deed niks? Indien dit allemaal correct is, zit ik vast.
Misschien dat iemand anders een lumineus idee heeft?
Probeer eens met een JavaScript library te werken, die vangen alle AJAX requests gemakkelijker op volgens browser. (bv jQuery)
Je kan met een instelling in een library je caching uit zetten.
Beirensg: Ik weet even niet hoe ik de cache kan controleren in de browser. De instellingen zijn gewoon de standaard instellingen. Daar lijkt het mij ook niet in te zitten. Moet ik zeggen dat ik wel alleen getest heb in IE. Misschien veroorzaakt die het probleem. Normaal gesproken werk ik met Firefox, maar wanneer ik dan in IE ga testen blijkt ineens veel niet te werken. Vandaar test ik eerst in IE.
Headers heb ik aangepast maar veranderde, helaas, niks.
Kevin: ik zal daarheen kijken. Ik kom namelijk ook in de problemen met andere dingen merk ik. De vraag die ik in een ander topic stelde leek opgelost te zijn (Deze link) maar toen ik hem in de div (Ajax, zie link bij mijn eerste bericht in dit topic) plaatste die wordt opgeroepen blijkt het ineens niet meer te werken (hij reageert maar op 1 checkbox). En ook hier kom ik er niet achter waar het probleem zich bevindt. Omdat de rest daarin wel goed werkt.
De cache kan je clearen via het menu tools, internet options en dan browsing history.
Aangezien je met IE werkt kan het ook liggen aan het feit dat je in debuggingmode werkt. Eventjes op F12 drukken voor de developertools te openen en dan op de tab script op stop debugging klikken (indien er start debugging staat, is het ok!!!)
Voor de nieuwe problemen: dit ligt waarschijnlijk aan JQuery en het doorlopen van de DOM, waarschijnlijk vindt hij niet de juiste elementen, of zijn er namen veranderd. We zullen de code hiervoor moeten bekijken
Aangezien je met IE werkt kan het ook liggen aan het feit dat je in debuggingmode werkt. Eventjes op F12 drukken voor de developertools te openen en dan op de tab script op stop debugging klikken (indien er start debugging staat, is het ok!!!)
Voor de nieuwe problemen: dit ligt waarschijnlijk aan JQuery en het doorlopen van de DOM, waarschijnlijk vindt hij niet de juiste elementen, of zijn er namen veranderd. We zullen de code hiervoor moeten bekijken
Cache is in ieder geval verwijderd nu.
Deze stond uit (stond start debugging). Heb hem wel aangezet om te kijken wat er fout ging bij het nieuwe probleem. Maar hij geeft helaas niks weer.
Hij ziet nu trouwens wel direct veranderingen. Ik weet alleen niet of het nu aan de cache gelegen heeft dan.
Ik zal de code zo in het betreffende topic plaatsen.
start debugging is enkel voor JavaScript (ook JQuery dus) errors er uit te halen. Je kan dit gebruiken om snel een breakpoint in de functies te plaatsen. Waarschijnlijk zal je zo zien dat de functies change nooit uitgevoerd worden in je code (zie mijn antwoord op de desbetreffende vraag).
Hopelijk geraak je er nu een beetje uit.
Heb je dit misschien ergens online staan? Dat zou handig zijn omdat we dan even zelf kunnen testen/proberen en dan ga je misschien sneller een duidelijk antwoord hebben.