Avatar billede para7 Nybegynder
03. februar 2004 - 09:48 Der er 10 kommentarer og
1 løsning

Overføre formdata fra popop

Jeg har et popop vindue hvor jeg retter et formfelt. Jeg sender det til en  side, der behandler dataene:

onClick="opener.location.reload('retEXE.asp?<%=request.querystring%>');self.close()"

Siden får desværre ikke fat i formdataene. Måske p.g.a. reload? Hvordan klarer jeg mon det ?
Avatar billede mm12010 Nybegynder
03. februar 2004 - 09:53 #1
hvad er det du vil?
Avatar billede nute Nybegynder
03. februar 2004 - 10:05 #2
du kan, såvidt mig bekendt, ikke submitte direkte til det vindu der åbnede popup'et. du kan gøre nogle tricks ... enten:

http://developer.irt.org/script/339.htm

ellers kan du ved submit, løbe alle elementer på siden igennem, lave en querystring af det, og lægge disse på din URL:

<html>
<script>
function submitMe()
{
    queryString = "?";
    for( i=0; i<document.frm.elements.length; i++ )
    {
        queryString += document.frm.elements[i].id + "=" + document.frm.elements[i].value;
        if( i<document.frm.elements.length )
        {
            queryString += "&";
        }
    }
    opener.location.reload('retEXE.asp' + queryString );
    self.close();
}
</script>
<body>
<form id="frm">
<input type="text" id="txt">
<a href="java script:void(0)" onclick="submitMe()">Submit</a>
</body>
</html>
Avatar billede para7 Nybegynder
03. februar 2004 - 11:14 #3
Tak indtil videre.
nute:
Det lyder godt, men at overføre med querystring har den ulempe, at tegnet & ikke går an.
Medmindre vi midlertidigt udskifter det med at andet fx [og].
Kan vi indsætte en replace funktion for tegnet & ?

NB: Der kommer scriptfejl: Linje 6 tegn 15 'document.frm.elements' er null eller ikke et objekt.
Avatar billede o-zone Nybegynder
03. februar 2004 - 11:17 #4
escape og unescape fikser alle de "ulovlige" tegn :-)
Avatar billede nute Nybegynder
03. februar 2004 - 11:19 #5
joda ... du kan overføre & ... du skal bare escape din streng:

queryString += document.frm.elements[i].id + "=" + escape( document.frm.elements[i].value );


prøv denne:

function submitMe()
{
    queryString = "?";
    var objform = document.forms['frm'];
    for( i=0; i<objform.elements.length; i++ )
    {
        queryString += objform.elements[i].id + "=" + escape( objform.elements[i].value );
        if( i<objform.elements.length )
        {
            queryString += "&";
        }
    }
    opener.location.reload('retEXE.asp' + queryString );
    self.close();
}

/nute
Avatar billede para7 Nybegynder
03. februar 2004 - 11:20 #6
o-zone:
Det lyder jo godt, hvordan får jeg det ind i scriptet ?
Avatar billede para7 Nybegynder
03. februar 2004 - 11:25 #7
nute:
Ny scriptfejl: Linje 15 tegn 5 'opener.location' er null eller ikke et objekt.
Avatar billede para7 Nybegynder
03. februar 2004 - 11:28 #8
OK. undskyld. Som popup er der ingen scriptfejl ;-)
Avatar billede nute Nybegynder
03. februar 2004 - 11:29 #9
sorry ... prøv:

opener.document.location.reload('retEXE.asp' + queryString );
Avatar billede o-zone Nybegynder
03. februar 2004 - 11:33 #10
Jeg skal lige høre igen - hvad er det præcis du vil?
Hvis du bare vil overføre værdier indtastet i en popup til opener vinduet, så er der absolut ingen grund til at gå omkring url'en?

escape og unescape bruges sådan her:
escape("Her er et &-tegn");            ==> "Her%20er%20et%20%26-tegn"
unescape("Her%20er%20et%20%26-tegn");  ==> "Her er et &-tegn"
Avatar billede para7 Nybegynder
03. februar 2004 - 12:08 #11
o-zone:
Tak for lektionen, men det som nute har brygget sammen fungerer fint. Jeg har kombineret med noget asp og det funker bare ;o}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester