Toon posts:

[JS] setTimeout() probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit dus met een op het eerste zicht zeer simpel probleem, maar ik heb mij er al werkelijk dood op geërgerd dat ik het niet opgelost krijg. Het is misschien het gemakkelijkste dat ik eerste even kort schets wat ik juist wil doen.

Ik heb dus een main window die een popup window opent. In deze popup window dienen dan enkele zaken ingevuld te worden. Wanneer ik op de "add"-knop druk van de popup window dienen volgende dingen te gebeuren:
  1. de waarden van de ingevulde velden dienen naar de sessie weggeschreven te worden
  2. de popup window dient gesloten te worden
  3. de main window dient gerefreshed te worden zodanig dat de zopas ingegeven informatie getoond wordt
Stap 1 werkt al (gewoon via PHP laten wegschrijven naar de sessie). Stap 2 en 3 willen echter niet lukken. Ik weet dat ik sowieso JavaScript ga moeten gebruiken. Ik heb dan ook enkele pogingen gedaan.


Poging 1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function doIt()
{
    reloadIt();
    closePopup();
}

function reloadIt()
{
    opener.location.href = 'cases.php?doAddEmails=1';
}

function closePopup()
{
    window.close();
}

Dit wil echter niet werken. Het popup venster sluit wel, ook het main venster refreshed MAAR niet met de nieuwe informatie. Ik denk dat ik ook weet hoe het komt. PHP heeft namelijk eventjes de tijd nodig om alles te verwerken. JavaScript daarentegen werkt onmiddelijk. Hierdoor is mijn sessie nog niet geupdate met de nieuwe informatie voordat mijn main venster gerefreshed wordt.


Poging 2:
Volgens mij moet ik dus met timeouts gaan werken, en dus meer bepaald de setTimeout() functie van JavaScript. De volgende code heb ik dan ook ineengeknutseld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function reloadIt()
{
    opener.location.href = 'cases.php?doAddEmails=1';
}

function closePopup()
{
    window.close();
}

function doIt()
{
    setTimeout('reloadIt();',1000);
    setTimeout('closePopup();',1000);
}

Maar deze code wil dus langs geen kanten werken. Het doet dus helemaal NIETS! Firefox (javascript:) geeft niet aan dat er fouten in mijn code staan. Snapt iemand wat ik verkeerd doe? Of heeft iemand een beter idee om mijn probleem op te lossen?


fonske

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wacht ff, ik ga ervanuit dat je een postback doet naar een php pagina, die de informatie in sessies stopt? Waarom retourneer je aan 't eind niet de juiste pagina?

In je popup maak je gebruik van een form, neem ik aan, dus kan je makkelijk met target verwijzen naar je parent. Daarna je popup sluiten en je opener heeft de juiste informatie :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Ja en neen. Ik moet het namelijk 2x gebruiken.

De eerste keer zou de manier dat je zegt misschien een oplossing kunnen zijn. Dit popup venster bevat namelijk een lijst van namen die mbv een checkbox geselecteerd kunnen worden. De geselecteerd namen (de ID's ervan) dienen teruggegeven te worden aan het main venster. Ik zal eens op google trachten te zoeken hoe het systeem van die post-back en targets werkt. Als ik het niet vind zal ik wel eens roepen hier ;-).


De tweede keer is echter verschillend (allé dat denk ik toch). Het popup venster dat geopend wordt bevat namelijk een wizard om personen/bedrijven toe te voegen. Deze wizard is vrij complex zodat het gebruik van sessies noodzakelijk was om mijn code overzichtelijk te houden. Wanneer na het invullen van de laatste stap op de "add"-button gedrukt wordt worden alle gegevens uit de sessie weggeschreven naar de databank. De bedoeling is dan dat het ID van deze laatste toegevoegde persoon/bedrijf teruggegeven wordt aan het main venster. Het mainvenster dient dan te refreshen zodat de nieuwe persoon/bedrijf in de lijst (drop-down-menu) komt te staan en automatisch geselecteerd wordt. Nu ik erover nadenk bedenk ik dat ik dat ID misschien ook via een hidden field zou kunnen doorgeven. Of is dat niet mogelijk?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Denk dat je veel meer scriptgebaseerd moet gaan werken. Dus niet telkens een postback doen, maar je pagina's dynamisch opbouwen door òf een reeks hidden layers neer te zetten die opgeroepen worden (zichtbaar worden gemaakt) aan de hand van de door de gebruiker uitgevoerde acties òf de nieuwe formulieren dynamisch op te halen met xmlhttp.

Daarnaast kun je alle interactie met het formulier in je parent-window via script laten verlopen. Dus zowel het invoeren van waarden als het toevoegen van opties aan selects, etc.

Mocht je eventueel tussendoor nog waardes willen posten dan kun je ook dat "onzichtbaar" via xmlhttp doen

[ Voor 11% gewijzigd door faabman op 13-04-2005 10:14 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

faabman schreef op woensdag 13 april 2005 @ 10:13:
Denk dat je veel meer scriptgebaseerd moet gaan werken. Dus niet telkens een postback doen, maar je pagina's dynamisch opbouwen door òf een reeks hidden layers neer te zetten die opgeroepen worden (zichtbaar worden gemaakt) aan de hand van de door de gebruiker uitgevoerde acties òf de nieuwe formulieren dynamisch op te halen met xmlhttp.

Daarnaast kun je alle interactie met het formulier in je parent-window via script laten verlopen. Dus zowel het invoeren van waarden als het toevoegen van opties aan selects, etc.

Mocht je eventueel tussendoor nog waardes willen posten dan kun je ook dat "onzichtbaar" via xmlhttp doen
Wat is resultaat-technisch gezien het verschil tussen een postback en een xmlHTTP request? ;)

Denk dat het handig is om TS op weg te helpen met een oplossing ipv meteen een nieuwe techniek aan te smeren.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Bedankt beiden!

Ik denk dat ik het voorlopig gewoon ga proberen om het met die postback op te lossen. Maar hoe meer ik lees over xmlHTTP hoe meer ik er mee wil beginnen experimenteren. Naar de toekomt toe ga ik dan ook proberen het systeem dat ik aan het schrijven ben meer en meer te laten werken mbv xmlHTTP. Spijtig dat ik niet eerder over xmlHTTP heb gehoord, want dan zou ik er vanaf het begin er mee gewerkt hebben.

Heeft er hier iemand een goede (liefst uitgebreide tutorial) over xmlHTTP gevonden? Want ik heb er een aantal gevonden mij die beperken zich allemaal tot redelijk basis zaken.

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Verwijderd schreef op donderdag 14 april 2005 @ 03:59:
Heeft er hier iemand een goede (liefst uitgebreide tutorial) over xmlHTTP gevonden? Want ik heb er een aantal gevonden mij die beperken zich allemaal tot redelijk basis zaken.
Mozzila: http://www.mozilla.org/xmlextras/
Microsoft MSXML

Mozilla verwijst zelf ook naar de MSXML SDK omdat die de complete documentatie bevat...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!

Pagina: 1