login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Jquery refresh als conditie voldaan is (Opgelost)

Offline betterdays - 23/05/2012 12:13
Avatar van betterdaysLid Hey iedereen,

Ik heb al zoveel liggen zoeken op het internet, maar ik kom er maar niet uit.
Is het mogelijk om een pagina te laten refreshen, maar enkel als een PHP conditie is voldaan?

Ik dacht dat dit wel mogelijk moest zijn met jquery. Maar ik ben niet echt enorm sterk hiermee (ik kan wel wat in elkaar boksen, maar niet veel).

Waarom wil ik dit gebruiken? Wel na het posten van een spelletjesscore, dan zou de gebruiker moeten doorgestuurd worden naar een andere pagina. Het probleem is dat de score verwerkt wordt via een gateway en dus enkel opgeslagen wordt in de database. De gebruiker duwt dus niet op submit ofzo.

Ik wil dus controleren of er al een score in de database is gepost en zoja, de gebruiker doorsturen naar een andere pagina.

Haha weer een heel lang verhaal voor een eigenlijk klein probleem.

7 antwoorden

Gesponsorde links
Offline Maarten - 23/05/2012 13:59
Avatar van Maarten Erelid Je zou dat kunnen door via een AJAX-request de "target" op te halen vanuit een PHP pagina. Als het OK is geef je die URL terug.

Andere optie is om te checken via ajax of die conditie voldaan is, en indien je "true" of whatever terugstuurt vanuit die PHP, redirecten, maar dan kan de eerste beste ook die URL gewoon uit de broncode halen en er rechtstreeks naar navigeren. Maar dat men dan uiteraard ook weer gewoon als men 1 keer geredirect is. Dus dan zou je beter alweer een url teruggeven met daarin een bepaalde hash zodat je kan checken of de redirect authentiek is.
Offline betterdays - 23/05/2012 14:30
Avatar van betterdays Lid
Maarten schreef:
Je zou dat kunnen door via een AJAX-request de "target" op te halen vanuit een PHP pagina. Als het OK is geef je die URL terug.

Andere optie is om te checken via ajax of die conditie voldaan is, en indien je "true" of whatever terugstuurt vanuit die PHP, redirecten, maar dan kan de eerste beste ook die URL gewoon uit de broncode halen en er rechtstreeks naar navigeren. Maar dat men dan uiteraard ook weer gewoon als men 1 keer geredirect is. Dus dan zou je beter alweer een url teruggeven met daarin een bepaalde hash zodat je kan checken of de redirect authentiek is.


De 2e optie probeer ik inderdaad te doen.
Ik wil wel niet redirecten, maar gewoon dat de pagina refresht na het posten van de score.
Maar hoe zet ik dan die conditie (php query) in jquery zodat deze refresht na het posten van de score 
Offline Maarten - 24/05/2012 09:13 (laatste wijziging 24/05/2012 09:15)
Avatar van Maarten Erelid Gewoon, de output van je php pagina matchen?
bv. if(data == 'ok') {
location.href = 'nieuwepagina.php';
}
of
location.reload();

  1. $.get('een-check.php', function(data) {
  2. if(data == 'ok') location.href = 'een-andere-pagina.php';
  3. // of als de output van je pagina de nieuwe link bevat
  4. location.href = data;
  5. });
Bedankt door: betterdays
Offline betterdays - 24/05/2012 14:26
Avatar van betterdays Lid @ Maarten: Bedankt om mij op de goede weg te zetten! Ik was veel te ver aan het denken.

Dit is de oplossing die ik heb gebruikt. Er is een setinterval toegevoegd om elke seconde nogmaals te controleren of reeds is gespeeld.

  1. <script type="text/javascript"
  2. src="../js/jquery-1.5.min.js"></script>
  3. <script type="text/javascript">
  4. $(document).ready(function() {
  5. setInterval(function() {
  6. $.get('scorepost.php', function(data) {
  7. if(data == 'Ok'){
  8. alert("Goed gespeeld! Druk op Ok, om doorgestuurd te worden naar het dagspel overzicht.");
  9. location.href = 'dagspel.php';
  10. }
  11. });
  12. }, 1000);
  13. });
  14. </script>


Let wel op: indien iemand dit ooit wilt gebruiken. De gebruiker moet javascript hebben ingeschakelt. Anders wordt hij bij mij doorverbonden naar een andere pagina via <noscript>.
Offline Martijn - 24/05/2012 15:20 (laatste wijziging 24/05/2012 15:22)
Avatar van Martijn Crew PHP Let hier wel bij op! Dit houdt dus in dat elke user op deze pagina dus 1 load per seconde doet. dat is 60p/m, bij 10 users zit je op 600 p/m. Nogsteeds geen probleem voor bijna alle servers, maar dit is dus wel een situatie waar je niet te makkelijk mee moet omgaan. Doe dit truucje op 10 pagina's en je load zal steeds meer groeien.

Nogmaals, in deze situatie heb je geen problemen, maar het is iets om rekening mee te houden. Je kunt bv ipv 'ok' "1" terug sturen, scheelt je een byte p/load. Again, in dit voorbeeld amper van waarde, maar als je het gaat uitbreiden ;) Ook je php zo klein/snel/effecient mogelijk houden.

edit: Bedenk me zo, browsers zouden er nog wel eens langzamer door kunnen worden, zker op oudere pc's. Eens per 2sec zou bijvoorbeeld netzogoed kunnen.

Of eens per 5seconde, met een timertje ernaast met 'refresh in 5, 4, 3, 2, 1'
Offline Maarten - 24/05/2012 16:58
Avatar van Maarten Erelid Trouwens, als ik de broncode opengooi en gewoon navigeer naar dagspel.php, ben ik er dan ook?
Offline betterdays - 24/05/2012 21:51
Avatar van betterdays Lid @ Martijn: Thx voor de feedback! Ik heb inderdaad ook al zitten denken aan de server load. Ik ga het sowieso inderdaad terugsturen met waarde 1. Het is wel slecht 1 query die geladen dient te worden elke seconde. Ik ga het straks ook eens testen voor elke 2 seconden.

@ Maarten: Als je daarnaar navigeert, dan kom je gewoon op de overzicht pagina. Daar mag ja van mij zoveel naar navigeren als je zelf wilt als lid. De resultaten worden toch ergens anders verwerkt. Ook wordt alles netjes via POST variabelen geregeld, dus is de kans op manipulatie door de gebruiker zeer klein (is natuurlijk nooit onbestaand).
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.169s