Toon posts:

[JS/HTML] Link href en onclick submit

Pagina: 1
Acties:

Verwijderd

Topicstarter
Zit met de volgende case in mijn maag, snap niet waarom dit kan werken.

Het zit als volgt:
Een collega van me heeft een link aangemaakt in html die zowel een href heeft als een onclick event.
Het onclick event zorgt er voor dat het document gesubmit wordt naar de server. Wanneer server de request heeft afgehandeld wordt je alsnog ge-redirect naar de pagina die is aangegeven in de href.

Hoe is dit mogelijk?


HTML:
1
<a href="oets.aspx" onclick="document.Form1.submit()">link</a>

  • Suaver
  • Registratie: Januari 2004
  • Laatst online: 19-11 14:55

Suaver

jokecoat

In de action van het FORM element, kun je dan toch die oets.aspx invullen? Want als je het FORM submit, wordt hij sowieso doorgestuurd. Tenzij je in de action bijv. een JS functie opgeeft.

You, me, us, together, me, us, you, we, us, you, me... DONE.


Verwijderd

HTML:
1
<a href="oets.aspx" onclick="document.Form1.submit(); return false">link</a>


de return false; cancelled de href

overigens events op links zijn niet echt netjes. Hiervoor zijn buttons. (over het algemeen)

[ Voor 10% gewijzigd door Verwijderd op 25-01-2007 16:03 ]


Verwijderd

zet in je onclick -> onclick="document.Form1.submit(); return false" dan wordt datgene in de href niet meer uitgevoerd
edit: te laat

[ Voor 5% gewijzigd door Verwijderd op 25-01-2007 16:04 ]


  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Zorgt ASPx daar niet voor? :P Die doet geloof ik een heleboel voor je maar ik zou niet precies weten wat allemaal, heb er geen ervaring mee.

De onclick werkt gewoon en gaat zoals Suaver al zei naar de pagina die in het action attribuut van Form1 in dit geval staat. Misschien stuurt die action je ook wel door naar oets.aspx (of moest het iets.aspx zijn? ;)).

Verwijderd

Topicstarter
Wij werken hier niet met blaat maar met oets en gerben :).

Snap de code wel. Maar het zou niet moeten werken. Want je doet een request naar de server op de pagina waar je op dat moment bent.

Dit heb ik door te debuggen ontdekt. Vervolgens wordt de C# code in ASP.NET 1.1 netjes afgehandeld. Hierna wordt je toch nog doorgelinkt naar "oets.aspx".

Betekent dit dat ASP.NET heeft bijgehouden wat er in de href stond om zodoende een redirect uit te voeren?

Mijn collega heeft het ook zo bedoeld, zijn kennis is nog niet optimaal op het gebied van web-development, maar begin toch een beetje aan mezelf te twijfelen.

[ Voor 14% gewijzigd door Verwijderd op 25-01-2007 16:27 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Is dit niet gewoon het PostBack mechanisme van .Net?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Suaver
  • Registratie: Januari 2004
  • Laatst online: 19-11 14:55

Suaver

jokecoat

En anders doe je toch gewoon dit?

HTML:
1
<a href="javascript:document.Form1.submit()">link</a>

You, me, us, together, me, us, you, we, us, you, me... DONE.


  • WormLord
  • Registratie: September 2003
  • Laatst online: 01-12 13:49

WormLord

Devver

Verwijderd schreef op donderdag 25 januari 2007 @ 16:17:
Wij werken hier niet met blaat maar met oets en gerben :).

Snap de code wel. Maar het zou niet moeten werken. Want je doet een request naar de server op de pagina waar je op dat moment bent.
Nee, met een dergelijke link doe je 2 requests naar de server. Eerst de form.submit via de onClick, en direct daarna een GET van oets.aspx via de link.
Verwijderd schreef op donderdag 25 januari 2007 @ 16:17:
Dit heb ik door te debuggen ontdekt. Vervolgens wordt de C# code in ASP.NET 1.1 netjes afgehandeld. Hierna wordt je toch nog doorgelinkt naar "oets.aspx".

Betekent dit dat ASP.NET heeft bijgehouden wat er in de href stond om zodoende een redirect uit te voeren?
Nee dus. Doordat de browser als laatste actie de GET van oets.aspx doet, is dat de pagina die je te zien zal krijgen. Het is dus de browser die dat bijhoud, niet ASP.NET. Voor ASP.NET zijn dit gewoon 2 page-requests.
Verwijderd schreef op donderdag 25 januari 2007 @ 16:17:
Mijn collega heeft het ook zo bedoeld, zijn kennis is nog niet optimaal op het gebied van web-development, maar begin toch een beetje aan mezelf te twijfelen.
Niet gaan twijfelen aan jezelf :)
Het is creatief gebruik van een link, maar het maakt het volgen van de flow niet duidelijker. Volgens mij zou het beter zijn om alleen de form.submit te doen en dan in de aspx die dat afhandeld de redirect naar oets.aspx te regelen.

Verwijderd

Dit verhaal heb ik dus geprobeerd maar het ziet er naar uit dat dit in sommige gevallen wel werkt maar meestal niet.

Bij mij is het zo dat de form gegevens in ongeveer 30% van de gevallen bij de server uitkomen bij gelijkblijvende code :?

Ik heb een link waar ik dus een paar keer op moet klikken voordat de gegevens worden ontvangen door de applicatie.

Dit komt misschien door het feit dat de nieuwe pagina al word geladen voordat de oude pagina verzonden kan worden.

Als ik eerst een alert box laat zien voordat er ge-submit word dan gaat het altijd wel goed:

<a href="prutz2.aspx" onclick="document.Form1.submit();">pruds2</a> werkt soms;

<a href="prutz2.aspx" onclick="alert(‘test’);document.Form1.submit();">pruds2</a> werkt altijd :?

Het is dus de bedoeling dat ik een aantal links heb in vorm van tabbladen. Als iemand op een link klikt gaat hij dus eerst de ingevoerde gegevens opslaan en pas daarna gaat hij naar een ander invoer formulier. Ik dacht hiermee een oplossing te hebben maar dat valt dus tegen. Misschien dat hier iemand weet hoe je dit wel kunt doen zonder problemen.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:35

crisp

Devver

Pixelated

a) forms submitten met een link is een no-no; gebruik gewoon een submit-button of image (dan heb je ook geen afhankelijkheid van javascript)
b) zorg gewoon dat je serverside script de client weer redirect naar de juiste pagina

Intentionally left blank


Verwijderd

crisp schreef op dinsdag 06 februari 2007 @ 14:24:
a) forms submitten met een link is een no-no; gebruik gewoon een submit-button of image (dan heb je ook geen afhankelijkheid van javascript)
b) zorg gewoon dat je serverside script de client weer redirect naar de juiste pagina
Oké goed punt; Dit deed mijn oude code. Ik d8 alleen hiermee een simpelere manier te hebben gevonden.

Conclusie is nu dus dat je dit op deze manier NIET kunt regelen. Als het goed gaat dan is dat toeval en het zou dus best kunnen dat je klachten gaat krijgen over niet opgelsagen formulieren van je gebruikers.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:35

crisp

Devver

Pixelated

Verwijderd schreef op dinsdag 06 februari 2007 @ 14:37:
[...]

Conclusie is nu dus dat je dit op deze manier NIET kunt regelen. Als het goed gaat dan is dat toeval en het zou dus best kunnen dat je klachten gaat krijgen over niet opgelsagen formulieren van je gebruikers.
idd :)

Intentionally left blank

Pagina: 1