Ondervangen/wegdrukken 'resultaat'-pagina formulier

Pagina: 1
Acties:

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Op mijn site heb ik een formulier staan, waarvan de velden en submit-knop verwijzen naar een formulier dat op een andere website (niet van mij) staat. Dit werkt prima, als ik op submit klik worden de gegevens naar de andere site verzonden.

Ik gebruik deze code op mijn site:
<FORM ENCTYPE="multipart/form-data" ACTION="http://www.anderesite.com/paginadieiknietwilzien" METHOD="POST">

Echter deze website geeft vervolgens een resultaat/bedank-pagina (paginadieiknietwilzien). Is er een manier waarop ik deze kan onderdrukken/vervangen door mijn eigen pagina? ik wil graag dat de bezoeker van mijn site niet merkt dat de gegevens verstuurd worden naar een andere site.

Verwijderd

Imo twee opties:

• siteadmin van anderesite.com vragen het aan te passen.
• paginadiejenietwilzien op je eigen site zetten en zo aanpassen dat je niet meer bedankt wordt.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Zet een onzichtbare iframe op je pagina en post daar naar toe :)

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
De andere site aanpassen is geen optie.
Paginadieiknietwilzien op mijn eigen site zetten ook niet.. het gaat hier om een CGI(?)-script op die andere site. De ACTION-tag kan ik dus niet veranderen, anders werkt het formulier niet.

Posten naar een onzichtbaar iframe. Hoe doe ik dat... met een TARGET-tag?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

jeropc schreef op 11 oktober 2004 @ 11:27:
De andere site aanpassen is geen optie.
Paginadieiknietwilzien op mijn eigen site zetten ook niet.. het gaat hier om een CGI(?)-script op die andere site. De ACTION-tag kan ik dus niet veranderen, anders werkt het formulier niet.

Posten naar een onzichtbaar iframe. Hoe doe ik dat... met een TARGET-tag?
code:
1
2
3
<iframe style="display:none" name="Hier" />

<form target="Hier">

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Andre bedankt! Dit werkt prima. Het "display:none" was ik nog niet eerder tegengekomen.

Is er een mogelijkheid om nu in het frame/pagina waar ik op submit klik een eigen bedank/resultaat-pagina te laten verschijnen? Iets met OnClick of zo?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

code:
1
<form onsubmit="location.href='bedankt.html';">

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Perfect! Andre nogmaals bedankt!

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Toen ik de oplossing vluchtig testte leekt het te werken, maar ik heb toch iets te vroeg gejuicht. Mijn eigen bedankt-pagina verschijnt inderdaad, maar het formulier wordt nu niet meer verstuurd.

code:
1
2
3
4
5
6
7
8
9
10
<FORM ENCTYPE="multipart/form-data"
ACTION="www.anderesite.com/paginadieiknietwilzien"
METHOD="POST"
TARGET="HIER"
ONSUBMIT="location.href='bedankt.html';">
Veld1 <input name=veld1 size=15 maxlength=15>
Veld2 <input name=veld2 size=15 maxlength=15>
<INPUT TYPE="submit" VALUE="Klik!" NAME="start">
</FORM>
<iframe idstyle="display:none" name="HIER">


Hoe kan ik dit oplossen, zodat ik paginadieiknietwilzien kan onderdrukken en indien mogelijk kan vervangen met mijn eigen bedankt-pagina?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Zet bij je onsubmit eens een return true:

code:
1
onsubmit="location.href='bedankt.html';return true;"

  • bredend
  • Registratie: September 2001
  • Laatst online: 20-05 16:26
Ik kan het laten, ik kan het doen of nog beter... ik kan het LATEN DOEN!
Lekker bij zo'n topic ;)

Ik vraag me wel af wat die return true altijd weer terug komt...

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
hahah, jah die is bij nader inzicht misschien toch niet zo slim gekozen... :P

Bedankt voor de reacties, ik ga het morgen proberen!

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Ik heb de 'return true' toegevoegd, maar het resultaat is hetzelfde, de bedankt-pagina wordt geladen, maar de gegevens worden niet verstuurd.

Weet iemand een andere oplossing?

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
niet zo verwonderlijk dat het niet werkt met die onsubmit. die wordt namelijk getriggerd voordat je formulier wordt verzonden, en aangezien in de onsubmit een andere pagina wordt aangeroepen, is het iframe waar je naartoe wilt posten, weg.

mocht je beschikken over server-side scripting zoals php of asp, dan kun je het formulier posten naar je eigen bedankpagina; daarin een identiek formulier plaatsen maar dan met hidden input fields waarin je de postdata "kopieert" met php/asp; in dezelfde pagina ook het iframe dat oorspronkelijk in je "echte" formulier zat, en onload van die beandkpagina post je het formulier naar de andere site.

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Bedankt voor je reactie. Het probleem is juist dat ik niet kan beschikken over server-side scripting, daarom moet ik ook gebruik maken van een script op andermans website.

Is er geen andere mogelijkheid dan?

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
mja dat vreesde ik al, je post niet voor niets naar een andere server ;)

wat je kan doen, is het 1e formulier met method="GET" versturen ipv "POST". indien er "URL-onvriendelijke karakters" in je formulier input kunnen voorkomen moet je die dan onsubmit wel even escape()-en.

op de bedankpagina kun je dan met window.location.search en String.split("&") en String.split("=") en unescape() de boel dan weer in het hidden form oversluizen.

niet zo heel fraai maar het zal wel werken...

  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Als ik POST in GET verander (ff zonder de verwijzing naar de bedankt-pagina eraan) dan krijg ik het originele formulier op de andere website te zien en wordt er dus niks verstuurd.

De rest van je antwoord snap ik eerlijk gezegd niet helemaal... Ik heb het idee dat er geen (eenvoudige) oplossing voor dit vraagstuk bestaat?

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik zal e.e.a. straks wel even verduidelijken, heb nu ff geen tijd...
(iemand die wel snapt wat ik bedoel mag de honeurs ook wel even waarnemen ;) )

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

jeropc schreef op 15 oktober 2004 @ 11:51:
Als ik POST in GET verander (ff zonder de verwijzing naar de bedankt-pagina eraan) dan krijg ik het originele formulier op de andere website te zien en wordt er dus niks verstuurd.

De rest van je antwoord snap ik eerlijk gezegd niet helemaal... Ik heb het idee dat er geen (eenvoudige) oplossing voor dit vraagstuk bestaat?
Het werkt waarschijnlijk wel met een timer die 3 seconden ofzo wacht voordat hij redirect, maar dat is ook niet fool-proof. Een ander idee is 2 iframes over elkaar heen waarvan je de z-index veranderd zodat het bedankje verschijnt en het formulier op de achtergrond gepost word.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Genoil schreef op 15 oktober 2004 @ 14:14:
ik zal e.e.a. straks wel even verduidelijken, heb nu ff geen tijd...
(iemand die wel snapt wat ik bedoel mag de honeurs ook wel even waarnemen ;) )
Ik snap wat je bedoeld dus ik neem de honeurs wel even waar. Hij bedoeld dat je op pagina 1 het formulier met GET post naar pagina 2. Op pagina 2 staat je bedankje en een script die de url parsed (dus de gegevens weer in inputs zet). Dat script post dan weer de gegevens met de POST methode naar een hidden iframe.

[ Voor 4% gewijzigd door André op 15-10-2004 14:22 ]


  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Ok, het is me al (iets) duidelijker. Maar dan moet ik dus een script draaien? Dat gaat juist niet... Of begrijp ik het verkeerd?
En zoiezo, het posten met POST naar een hidden frame probeer ik nu in principe toch ook... en dat werkt niet...

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Nou, ik was zelf eigenlijk ook wel benieuwd naar de werking van mijn oplossing, dus heb ik het maar even gebouwd:

localform.html:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
    <head>
        <script type="text/javascript">
            
            function code_elements(sCodeMethod, sTagName) {
                var aElements = document.getElementsByTagName(sTagName);
                for(var n = 0; n < aElements.length; n++) {
                    oElement = aElements[n];
                    if(oElement.type == "text" || oElement.nodeName == "TEXTAREA") {
                        if(sCodeMethod == "encode")
                            oElement.value = escape(oElement.value);
                        else if(sCodeMethod == "decode") {
                            oElement.value = unescape(oElement.value);
                        }                    
                    }                                               
                }
            }
            
            function code_form(sCodeMethod) {
                code_elements(sCodeMethod, "INPUT");
                code_elements(sCodeMethod, "TEXTAREA"); 
                return true;
            }
        
        </script>
    </head>
    <body onload="code_form('decode')">
        <form method="GET" action="bedankt.html" onsubmit="return code_form('encode')">
            <input type="text" id="fullname" name="fullname" />
            <input type="text" id="emailaddress" name="emailaddress" />
            <textarea id="messagebody" name="messagebody"></textarea>
            <input type="submit" />
        </form>
    </body>
</html>


bedankt.html:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<html>
    <head>
        <style>
            form, iframe {
                /*display:none;*/
            }
        </style>
        <script type="text/javascript">
            function load() {
                var sGet = window.location.search.substr(1);
                var aGet = sGet.split("&");         
                for(var n = 0; n < aGet.length; n++) {
                    var sGetVar = aGet[n];
                    var aGetVar = sGetVar.split("=");
                    var sId     = aGetVar[0];
                    var sValue  = unescape(unescape(aGetVar[1]));
                    oField = document.getElementById(sId);
                    if(oField != null) {
                        if(oField.nodeName == "INPUT") {
                            oField.value = sValue;
                        }
                        else if(oField.nodeName == "TEXTAREA") {
                            var oText = document.createTextNode(sValue);
                            oField.appendChild(oText);
                        }
                    }
                } 
                oForm = document.getElementById("hiddenform");
                oForm.submit();
            }
        </script>
    </head>
    <body onload="load()">
        <iframe id="hiddenframe" name="hiddenframe" src="about:blank"></iframe>
        <form id="hiddenform" method="POST" action="http://www.meneer.net/test/post.php" target="hiddenframe">
            <input type="text" id="fullname" name="fullname" />
            <input type="text" id="emailaddress" name="emailaddress" />
            <textarea id="messagebody" name="messagebody"></textarea>
        </form>
        <hr />
        <p>hierboven alles op display:none zetten</p>
        <h1>Bedankt!</h1>
    </body>
</html>


het hele zaakje staat ook hier. Da's dan wel op dezelfde host als waar het formulier uiteindelijk naartoe gepost wordt, maar het werkt ook prima lokaal of vanaf een andere host.

het hele encoding/decoding gebeuren is om te zorgen dat karakters als <spatie> en "+" enz. netjes via een URL naar het tweede formulier overgeluist worden, of als men op bedankt.html twee keer back drukt om weer in het formulier terecht te komen.

ps. ga me nou niet vertellen dat je ook <input type="file" /> dingetjes in je formulier hebt zitten, want dat gaat met deze truuc nooit werken :)

[ Voor 34% gewijzigd door Genoil op 16-10-2004 12:05 ]


  • JERO79
  • Registratie: November 2000
  • Laatst online: 06:03
Ditmaal heb ik even de tijd genomen om het goed te testen. Deze oplossing werkt prima... Bedankt!
Pagina: 1