[JS] automatische submit formulier

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
Ik heb een script wat een foto's bewerkt. En om te voorkomen dat het geheugen vol zit, bewerkt hij per keer 10 foto's. Nu wil ik dat hij automatisch naar de volgende stap springt. Met ongeveer this.form.submit(); maar het werkt niet :( dit is het stukje van de code, wat onder de voortgang tabel staat, dit formulier komt na ongeveer 10~20 seconden tevoorschijn op de pagina, en moet zichzelf submitten.
code:
1
2
3
4
5
6
7
8
9
10
<?php
echo '<form action="index.php?p=album_processor&amp;action=1" method="post">'; 
echo '<input type="hidden" name="dir" value="'.$sDir.'" />';
echo '<input type="hidden" name="copyright_yn" value="'.$_POST['copyright_yn'].'" />';
echo '<input type="hidden" name="copyright_text" value="'.$_POST['copyright_text'].'" />';
echo '<input type="hidden" name="steps" value="'.$sSteps.'" />'; 
echo '<input type="hidden" name="page" value="'.$sNextPage.'" />'; 
echo '<input type="submit" name="submit" value="Verder met genereren" />'; 
echo '<script language="JavaScript" type="text/javascript">this.form.submit();</script></form>'; 
?>

Acties:
  • 0 Henk 'm!

  • IJsbeer
  • Registratie: Juni 2001
  • Niet online
Je moet aangeven welk form:

this.form[0].submit()

En als je geheugen volloopt heb je dus een memory leak in je foto bewerking, is het dan niet handiger om dat probleem proberen op te lossen.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat werkt er dan niet? Je doet niet zo heel veel dingen in je javascript, dus kijk eens of je wel naar 't juiste form verwijst :)

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.


Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
ja, een memory leak dacht ik al.
Maar het gaat via een object wat van alles inlaadt.
Door na de bewerking unset($oPicture) uit te voeren, kom ik ook niet veel verder.
De server laat me barsten zonder verder enige error.

De code is nu:
code:
1
2
3
4
5
6
7
8
9
10
<?php
        echo '<form action="index.php?p=album_processor&amp;action=1" name="form" method="post">';
        echo '<input type="hidden" name="dir" value="'.$sDir.'" />';
        echo '<input type="hidden" name="copyright_yn" value="'.$_POST['copyright_yn'].'" />';
        echo '<input type="hidden" name="copyright_text" value="'.$_POST['copyright_text'].'" />';
        echo '<input type="hidden" name="steps" value="'.$sSteps.'" />';
        echo '<input type="hidden" name="page" value="'.$sNextPage.'" />';
        echo '<input type="submit" name="submit" value="Verder met genereren" />';
        echo '<script language="JavaScript" type="text/javascript">this.form[0].submit();</script></form>';
?>

maar werkt nog steeds niet.

Edit: Wat er niet werkt? Hij submit het formulier niet na dat het formulier op de pagina is verschenen.

[ Voor 5% gewijzigd door robindv op 14-07-2009 17:09 . Reden: uitleg ]


Acties:
  • 0 Henk 'm!

Verwijderd

<form id="mijn_form"....

<script>
var form = document.getElementById("mijn_form");
form.submit();

o.i.d....

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Verwijderd schreef op dinsdag 14 juli 2009 @ 17:18:
<form id="mijn_form"....

<script>
var form = document.getElementById("mijn_form");
form.submit();

o.i.d....
Beetje omslachtige je JS, want je hoeft het niet in een var te gooien:
JavaScript:
1
this.form['mijn_form'].submit();
Moet dan ook werken. :)

Sowieso een beetje vreemd om een form automatisch te laten posten naar mijn mening.

TS, heb je al eens gedacht aan PHP via CLI? Ik denk dat dat beter aan jouw wensen volstaat dan een HTML formulier elke keer te parsen met PHP.

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 22:02

krvabo

MATERIALISE!

robindv schreef op dinsdag 14 juli 2009 @ 17:07:

Edit: Wat er niet werkt? Hij submit het formulier niet na dat het formulier op de pagina is verschenen.
Gebruik de error console in firefox eens. Dan krijg je heel mooi te zien wat er fout is aan je code.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
robindv schreef op dinsdag 14 juli 2009 @ 17:07:

Edit: Wat er niet werkt? Hij submit het formulier niet na dat het formulier op de pagina is verschenen.
En waarom niet?

Ik mag toch hopen dat je op zijn minst even de debug-functies van je browser gebruikt hebt?

Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
Ja, maar firebug zegt niet zo heel veel. Dit is de volledige html-output, hierin moet toch op z'n minst een fout te vinden zijn...
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<title>Processing</title>
</head>
<body><image src="themes/smcextra/images/stat_left.gif"><image src="themes/smcextra/images/stat_center.gif" height="12" width="0"><image src="themes/smcextra/images/stat_right.gif"> 0%<br /><table border="1"><tr><th>Name</th><th>Creëren thumbnail</th><th>Opslaan thumbnail</th><th>Nieuwe afmetingen</th><th>Creëren afbeelding</th><th>Opslaan orginele balk</th><th>Copyright inbranden</th><th>Opslaan afbeelding</th></tr><tr><td>DSCF0001_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0002_800x189.JPG</td><td>Success</td><td>Success</td><td>640*151</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0003_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0016_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0017_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0018_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0019_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0020_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0021_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr><tr><td>DSCF0022_800x600.JPG</td><td>Success</td><td>Success</td><td>640*480</td><td>Success</td><td>Success</td><td>Success</td><td>Success</td></tr></table>

<form action="index.php?p=album_processor&amp;action=1" name="mijn_form" method="post">
<input type="hidden" name="dir" value="testalbum" />
<input type="hidden" name="copyright_yn" value="1" />
<input type="hidden" name="copyright_text" value="activiteit - Maand jaar - © smcextra.com" />
<input type="hidden" name="steps" value="10" />
<input type="hidden" name="page" value="2" />
<input type="submit" name="submit" value="Verder met genereren" />
<script language="JavaScript" type="text/javascript">
    this.form['mijn_form'].submit();
</script>
</form>
</body>
</html>


[code=html] tags toegevoegd :)

[ Voor 0% gewijzigd door BtM909 op 15-07-2009 11:11 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 19-09 08:51

Janoz

Moderator Devschuur®

!litemod

'Niet zo heel veel' is niet hetzelfde als niks lijkt me.

Een paar dingen die ik zo snel zie:
- Moet het form niet (ook) een id hebben om er op deze manier naar te kunnen verwijzen?
- Het javascript wordt al aangeroepen nog voor het form helemaal klaar is (sluittag staat onder het form). het kan dus best zijn dat het form nog niet bekend is (want nog niet klaar) op het moment dat het javascript uitgevoerd wordt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
Oké, firebug geeft geen enkele bug aan. En ik heb de code aangepast aan jouw punten, maar het mag niet baten.
HTML:
1
2
3
4
5
6
7
8
9
10
11
<form action="index.php?p=album_processor&amp;action=1" name="mijn_form" id="mijn_form" method="post">
<input type="hidden" name="dir" value="testalbum" />
<input type="hidden" name="copyright_yn" value="1" />
<input type="hidden" name="copyright_text" value="activiteit - Maand jaar - © smcextra.com" />
<input type="hidden" name="steps" value="10" />
<input type="hidden" name="page" value="2" />
<input type="submit" name="submit" value="Verder met genereren" />
</form>
<script language="JavaScript" type="text/javascript">
    this.form['mijn_form'].submit();
</script>

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

DEBUGGEN DEBUGGEN DEBUGGEN ;) Welke browser test je eigenlijk in?

Waar verwijst this.form nu naar?
Waarom zegt Firebug dat er geen functie submit bestaat?




1. Pas je verwijzing goed aan naar 't juiste form

2. je hebt een element met de name="submit". Hoe weet je browser dat je niet naar dit element verwijst met document.forms['mijn_form'].submit ;)

[ Voor 56% gewijzigd door BtM909 op 15-07-2009 11:45 ]

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.


Acties:
  • 0 Henk 'm!

Verwijderd

BtM909 schreef op woensdag 15 juli 2009 @ 11:37:
DEBUGGEN DEBUGGEN DEBUGGEN ;) Welke browser test je eigenlijk in?

Waar verwijst this.form nu naar?
Debuggen is iig makkelijker met Firefox i.c.m. de addon Firebug

Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
Welke browser test je eigenlijk in?
Firefox
Waar verwijst this.form nu naar?
naar mijn_form, zoals ik het formulier genoemd heb..
Waarom zegt Firebug dat er geen functie submit bestaat?
Firebug zegt helemaal niets, en toont alleen
1. Pas je verwijzing goed aan naar 't juiste form
Hij heet toch mijn_form?
2. je hebt een element met de name="submit". Hoe weet je browser dat je niet naar dit element verwijst met document.forms['mijn_form'].submit ;)
submit heet nu actie, code is nu: document.forms['mijn_form'].submit(); .
En het werkt :)

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

robindv schreef op woensdag 15 juli 2009 @ 12:00:
[...]

Firebug zegt helemaal niets, en toont alleen
Rare Firebug heb je dan, die van mij zegt:
this.form is undefined
Redelijk duidelijk lijkt me.

Acties:
  • 0 Henk 'm!

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Tja, "this.form" werkt alleen als je het b.v. op een eventhandler van een INPUT element plaatst.
In jou vorm binnen script-tags kun je gewoon:
code:
1
document.forms['mijn_form'].submit();

gebruiken, waarbij 'mijn_form' de NAME van het form is, of:
code:
1
document.forms[0].submit();

waarbij je dus de 'ordinal index' gebruikt (0 = 1ste op de pagina), of:
code:
1
document.getElementById('mijn_form').submit();

waarbij 'mijn_form' de ID van het form is.

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
maar het werkt nu, ik ben blij

slotje

Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 02:53
Hier worden geen slotjes geplaatst als het werkt, bijvoorbeeld voor toekomstige gebruikers met hetzelfde probleem. Zou je je oplossing voor hen kunnen posten?

Acties:
  • 0 Henk 'm!

  • robindv
  • Registratie: Juli 2009
  • Laatst online: 19-09 14:28
Die gaf ik al:
submit heet nu actie, code is nu: document.forms['mijn_form'].submit(); .

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ah, een simpele typfout dus die je in 10 seconden zelf had gevonden als je zélf even de foutconsole had geopend.

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 22:02

krvabo

MATERIALISE!

mcDavid schreef op woensdag 15 juli 2009 @ 21:14:
[...]

Ah, een simpele typfout dus die je in 10 seconden zelf had gevonden als je zélf even de foutconsole had geopend.
Nee het was een simpel conflict in naamgeving. Gebruikmaken van 'gereserveerde woorden' dus. Hoewel dit natuurlijk wel te vinden is, is het iets wat je net moet weten om de fout niet te maken.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.

Pagina: 1