Toon posts:

[JS] een frame refreshen bij een submit

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb al meerdere topics doorgekeken, maar kom er niet uit...

Als ik in een formpje op submit druk, moet er ergens een ander frame gaan refreshen.

Ik geef in het form een invoer in een database, en in een ander frame lees ik deze tabel uit, dus als ik iets in de tabel verander, moet ie dat doorvoeren in het andere frame door te refreshen...

Ik heb het volgende:
code:
1
<form name="wistudatform" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>" onSubmit="window.frames['rightframe'].location.reload();">


Maar dit werkt dus niet helemaal goed...de database wordt wel ge-update, maar het frame wordt niet gerefreshed...

Wie kan mij helpen??

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Bij mijn weten is het onsubmit en niet onSubmit, geen idee of het verschil maakt. Hoe dan ook, Javascript hoort in Webdesign & Graphics en niet in Programming & Webscripting, zoals je ook in onze FAQ had kunnen lezen. Daarbij staat er geen taal in je titel, die frot ik er wel even bij. :)

PW>>WG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • André
  • Registratie: Maart 2002
  • Laatst online: 04-05 16:01

André

Analytics dude

Omdat de gegeven eerst verwerkt moeten worden zul je een timeout in moeten bouwen. Al is dat niet eens een hele nette methode aangezien de update soms langer duurt dan andere keren.

code:
1
<form name="wistudatform" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>" onSubmit="setTimeout('window.frames[\"rightframe\"].location.reload();', 500)">

Verwijderd

Topicstarter
Dit is het ook niet denk ik zo.

Ik denk dat het probleem in het parent-gebeuren zit...

De indeling van de pagina ziet er als volgt uit:

De index-pagina
code:
1
2
3
4
5
6
7
<frameset rows="50,*" cols="*" frameborder="no" border="0" framespacing="0">
  <frame src="topframe.html" name="topFrame" scrolling="NO" noresize >
  <frameset cols="*,147,550,145,*" frameborder="NO" border="0" framespacing="0">    
    <frame src="leftframe.html" name="leftFrame" scrolling="NO" noresize>
    <frame src="mainframe.html" name="mainFrame">
    <frame src="rightframe.php" name="rightFrame" scrolling="NO" noresize>
</frameset>


Het form zit dus in de mainframe, en hij moet het rightframe refreshen...

Hoop dat het nu wat duidelijker is...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Heb je wat André zei überhaupt geprobeerd? :?

Overigens moet je inderdaad parent.window.frame[framenaam] hebben, AFAIK. :P

[ Voor 48% gewijzigd door NMe op 04-07-2005 18:00 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
-NMe- schreef op maandag 04 juli 2005 @ 17:59:
Heb je wat André zei überhaupt geprobeerd? :?
Ja dat heb ik uitgeprobeerd, dit werkt helaas niet...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

timeout is overbodig hoor, parent.frames['rightframe'].location.reload(); zou moeten werken...

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op maandag 04 juli 2005 @ 18:37:
timeout is overbodig hoor, parent.frames['rightframe'].location.reload(); zou moeten werken...
Maar dat is niet zo.....helaas....

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

misschien als je dezelfde casing aanhoudt:
JavaScript:
1
parent.frames['rightFrame'].location.reload();

;)

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op maandag 04 juli 2005 @ 19:04:
misschien als je dezelfde casing aanhoudt:
JavaScript:
1
parent.frames['rightFrame'].location.reload();

;)
op zich een hele goede tip...dat is sowieso wel de bedoeling denk ik...

Maar helaas werkt het nog niet...

heb het met parent, document en met window geprobeerd, maar geen resultaat...

Verwijderd

Topicstarter
geloof dat ik bijna de oplossing heb...in plaats van parent heb ik top gebruikt....en hij werkt nu enigzins...alleen moet ik inderdaad een mooie timeout hebben die even wacht voor hij de pagina refreshed...als ik twee keer achter elkaar op de submit klik, doet ie het, maar bij een keer klikken niet...hij heeft dus effe tijd nodig om de gegevens te verwerken.

Ben er nog mee bezig dus...

[ Voor 57% gewijzigd door Verwijderd op 04-07-2005 20:45 ]


Verwijderd

Topicstarter
Ik ben nu aan het stoeien met de timeout-functie, maar die wil nog niet echt werken...

Heb nu de volgende code:

code:
1
<form name="wistudatform" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>" onSubmit="setTimeout('verversen()',500);">


en dan heb ik de functie verversen():
code:
1
2
3
4
5
<script language="JavaScript">
    function verversen(){
        top.frames['rightFrame'].document.location='../rightframe.php';
    }
</script>


Maar hij refreshed dus niet...wat doe ik fout?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Probeer eens dit:
HTML:
1
2
3
4
5
6
7
<script type="text/javascript">
function verversen(form)
{
    top.frames['rightFrame'].location = '../rightframe.php';
    form.submit();
}
<form id="wistudatform" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>" onsubmit="verversen();return false">

Hier weet je zeker dat de formsubmit pas plaatsvind na het verversen van het frame. De return false cancelled vervolgens de default action van het form (die je wel moet hebben voor clients die geen JS supporten). Het enige dat dat nog roet in het eten kan gooien is als de client rightframe.php uit de cache trekt ipv van de server opvraagt, maar als de server netjes no-cache headers meestuurt voor PHP-generated pages zal dat meestal geen probleem zijn.

3 notes mbt validity:
1) het script-element heeft geen language attribuut; type is echter verplicht
2) document.location is al jaren deprecated; location is gewoon een property van het window object
3) Een form heeft geen name attribuut; gebruik een id en spreek je form in scripting aan middels document.forms['id'] of document.getElementById('id') ipv document.formname

[ Voor 21% gewijzigd door crisp op 04-07-2005 23:45 ]

Intentionally left blank


Verwijderd

Topicstarter
Hartelijk dank voor deze oplossing! Het werkt als een trein!

Ik zal inderdaad met de code iets zorgvuldiger zijn, dank voor de tips!
Pagina: 1