# redirect in javascript



## bennihaag (10. Juli 2004)

Hallo,

ich habe ein Javascript in einem Formular.
In diesem Javascript ist ein Redirect-Aufruf. Ich möchte nun, dass sich mit dem Klick "Absenden" die Seite öffnet, die unter "Redirect" festgelegt ist. Bei mir kommt aber immer die Seite, die im Form-Tag unter "Action" eingetragen ist.

Das Problem ist, dass ich die Seite vom "Redirect"-Aufruf nicht in das "Action"-Kommando schreiben kann, weil das Javascript nicht unbedingt immer im Formular steht.

Eigentlich müsste ich nur irgendwie einen Befehl einbauen, dass mit dem Klicken "Absenden" die Seite von "Redirect" kommt, falls vorhanden, ansonsten eben die von "Action"

Hier sind Auzüge aus meiner Seite:

<html> 
<head> 
. 
. 
. 
</head> 
. 
. 
. 
<FORM name=xxx Form onsubmit="return validateform()" 
action=http://xxx.de/xxx/xxx/xxx method=post> 

. 
. 
. 

<SCRIPT language=javascript > 
.
.
.
document.writeln('<input type="hidden" name="redirect" 
value="'+url+'">'); 
.
.
. 
</SCRIPT> 

. 
. //hier stehen alle Formularfelder 
. 

<INPUT type=submit value="Send order" name=absenden> 
</FORM> 
</HTML>


----------



## Tobias Menzel (10. Juli 2004)

Hi,

ich muss gestehen, ich habe es nicht ausprobiert, aber es _könnte_ so gehen:

- dem Formular zunächst keine Action zuweisen

- Zum Versenden einen Input vom Typ "Button" nehmen:
	
	
	



```
<INPUT type=button value="Send order" name=absenden onClick=sendme()>
```
- Dazu eine Funktion:
	
	
	



```
function sendme() {
  if (document.formname.redirect) {
    document.formname.action=document.formname.redirect.value;
  } else {
    document.formname.action="http://xxx.de/xxx/xxx/xxx";
  }
  document.formname.submit();
}
```

Gruß


----------



## Sven Mintel (10. Juli 2004)

Kommt drauf an.
Wenn du nur weiterleiten willst:

```
<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    window.location=objForm.redirect.value;
    return false;
    }
return true;
}
//-->
</script>
```
Willst du aber, dass das Formular an die entsprechende Seite gesendet wird:

```
<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    objForm.action=objForm.redirect.value;
    }
return true;
}
//-->
</script>
```

Aufruf in beiden Fällen per

```
<form onsubmit="return validateform(this)">
```


----------



## bennihaag (10. Juli 2004)

*@ fatalus*

@ fatalus:



> Kommt drauf an. Wenn Du nur weiterleiten willst:



ich will eigentlich nur zu der "Redirect"-Seite weiterleiten, die Daten aus dem Formular/ den Formularfeldern sollen aber trotzdem dort gepeichert werden, wie es im Form-Tag definiert ist.
Die "Redirect"-Seite ist lediglich eine Seite, die eingefügt werden soll nach dem Klick "Absenden". 
Es soll also sowohl das Formular funktionieren, als auch als Folgeseite die Seite aus dem "Redirect" kommen!


bennihaag


----------



## bennihaag (10. Juli 2004)

*@ Datic*

@ Datic:

Wie müsste ich die PHP-Zeilen einfügen - wie mache ich klar, dass nun PHP folgt?


----------



## Tobias Menzel (10. Juli 2004)

Hi,

Das soll kein PHP sein - ich habe nur PHP-Tags verwendet, damit der Code schön farbig angezgeigt wird

Gruß

EDIT:
Inhalt wegen Fehler rausgenommen


----------



## Sven Mintel (11. Juli 2004)

> ich will eigentlich nur zu der "Redirect"-Seite weiterleiten, die Daten aus dem Formular/ den Formularfeldern sollen aber trotzdem dort gepeichert werden, wie es im Form-Tag definiert ist.


....eins von beiden geht nur(wenns im selben Fenster passieren soll).....Formular senden.....oder weiterleiten.

Wenn du PHP verfügbar hast, dann überprüfe die Eingaben damit....sende das Formular ganz normal...sind einige Eingaben nicht wunschgemäss, dann leite zu der "gewissen" Seite weiter...


----------



## Tobias Menzel (11. Juli 2004)

Stimmt.

Denkfehler meinerseits: im selben Fenster kannst Du keine neue Seite öffnen und zugleich ein PHP-Script aufrufen.

Die beste Lösung wäre in der Tat, die Redirect-Seite von der PHP-Seite aufrufen zu lassen.


----------



## bennihaag (11. Juli 2004)

*@ fatalus*

@ fatalus


Ach so... du bringst mich auf was.

Kann man den Redirect-Aufruf auch in einer neuen Seite vornehmen - und die Formulardaten würden dennoch gespeichert werden?

Da hätte ich nichts dagegen, wenn es technisch machbar wäre? Aber wie

bennihaag


----------



## KristophS (11. Juli 2004)

Also die FormuliarDaten Speichern kannst du ,dateiübergreifend , mit Sessions oder Cookies  & PHP .


----------



## bennihaag (11. Juli 2004)

*@ KristophS*

Da diese Formularseite ein Ausschnitt aus meinem Webshop ist, und diese Formulare auf PHP-Basis laufen, sollte das kein Problem sein.

Nur weiß ich nicht, wie es geht, dass sich der Redirect-Aufruf im neuen Fenster mit dem Klick "Send Order" glechzeitig mit dem Speichern der Formulardaten geht.

Wenn ich das richtig checke, müsste eigentlich nur der Redirect-Aufruf abgeändert werden, dass er sich im neuen Fenster öffnet. Das Formular macht deswegen ja trotzdem nichts anderes und speichert die Daten trotzdem.

Wie schaff ich es also, dass sich der Redirect-Aufruf im neuen Fenster öffnet?


----------



## Sven Mintel (11. Juli 2004)

```
window.open(formularname.redirect.value,'_blank');
```


----------



## bennihaag (11. Juli 2004)

*Danke!*

Wenn Du mir jetzt noch sagst, wohin ich diesen Code stellen muss?   und was muss ich ersetzen - nur Formularname oder auch redirect und value

vgl. Code-ausschnitt meines ersten Beitrages.


----------



## Sven Mintel (12. Juli 2004)

```
<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    window.open(objForm.redirect.value);
    }
return true;
}
//-->
</script>
```
..wo das in der Seite steht, ist egal.

Und das Formular weiterhin:

```
<form onsubmit="return validateform(this)">
```


----------



## bennihaag (13. Juli 2004)

*geht immer noch nicht!*

jetzt zeig ich euch mal den code - denn es funtioniert nicht. Was ist falsch am Code? 

Die Seite "Redirect" soll mit dem Klick "Send Order" in einem neuen Fenster geöffnet werden, gleichzeitig sollen die Formulardaten gespeichert werden, wie im Form-Tag definiert!


```
<html>
<head>
[...]
</head>

[...]

<FORM name=wbsForm onsubmit="return validateform(this)" action=https://ssl.xxx.de/xxx/xxx/xxx.php?xxx method=post>
<INPUT type=hidden value=bestell_bestaetigung.html name=cp_order_confirm> 

<SCRIPT language=javascript>

document.writeln('<input type="hidden" name="redirect" value="http://www.xxx.de">');

}
</SCRIPT>



<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    window.open(objForm.redirect.value);
    }
return true;
}
//-->
</script>

[...] // hier stehen die Formularfelder

<TABLE style="WIDTH: 603px; HEIGHT: 44px">
<TR><TD class=berMain align=center height=40>
After sending your order please wait a moment. Under certain circumstances it may take a few seconds before the order confirmation page appears. Please don't press the "Send order" button a second time for <STRONG>this will send a second order</STRONG>.
<BR><INPUT onclick=javascript:window.print() type=button value="Print order" name=drucken>&nbsp;
<INPUT type=submit value="Send order" name=absenden onclick="window.open(wbsForm.redirect.value,'_blank');
">



</TD></TR></TABLE></FORM></DIV>
	</BODY>
</HTML>
```

Danke schonmal für Eure Hilfe!


----------



## Sven Mintel (14. Juli 2004)

Das ist doch mal ein schönes Beispiel für Syntaxfehler und deren Auswirkungen 

In deinem ersten Skriptblock...wo du das redirect-Feld in die Seite schreibst... da steht eine einsame geschweifte Klammer.
Diese hat da nix zu suchen...aufgrund dieses Fehlers wird das redirect-Feld überhaupt nicht in die Seite geschrieben.

Lass dir während der Entwicklungsphase im Browser am besten Javascript-Fehler anzeigen....diese Option hast du in allen gebräuchlichen Browsern.
Der IE meldet z.B. Zeile 15, Zeichen 1, Syntaxfehler.... rate mal, was in Zeile 15 steht

Nimm also diese geschweifte Klammer heraus, und es geht.


----------



## bennihaag (14. Juli 2004)

*@ fatalus - Danke*

Ja klar, danke für den Hinweis. Jetzt geht es.

Das Problem liegt jetzt nur noch innerhlab des Javascripts, in dem der Redirect-Aufruf ist:

Ich hatte im vorherigen Beispiel nur zur Vereinfachung alles rausgenommen, was in dem JavaScript steht, und nur den Redirect-Aufurf stehen gelassen. So schaut es aber volständig aus:


```
<SCRIPT language=javascript>

for (var j = 1; j < {!wktotal:EUR#coupon}.;length; j++;)
	{
		if ({!wktotal:EUR#coupon} == "Total")
		{
		var k       = {!wktotal:EUR#coupon}.length;
		var AMOUNT      = {!wktotal:EUR#coupon}.substr(2,k);
		AMOUNT      = AMOUNT.replace(",","");
		}
		
	}
	
  	var ACCOUNTID   = "xxxxx-xxxxxx";
  	var CURRENCY    = "EUR";
 	var DESCRIPTION = "Gesamtbetrag";
  	var NOTIFY      = "xxx@xxx.de";
  	var CVC         = "yes";
  	var NAME        = "yes";
	var AUTOCLOSE   = "10";
	var url         = "http://xxx.de/scripts/Redirect.asp?AMOUNT=" + AMOUNT + "&ACCOUNTID=" + ACCOUNTID + "&CURRENCY=" + CURRENCY + "&ORDERID=" + ORDERID + "&DESCRIPTION=" + DESCRIPTION + "&NOTIFYADDRESS=" + NOTIFY + "&CCCVC=" + CVC + "&CCNAME=" + NAME + "&AUTOCLOSE=" + AUTOCLOSE";
	

	document.writeln('<input type="hidden" name="redirect" value="+url+">');
	
</SCRIPT>
```


Ich vermute, dass in diesem Script irgendwo der Fehler steckt. Hier wird zunächst der Preis ermittelt, dann soll das Koma rausgenommen werden - also statt 13,97 1397.

Die URL im Redirect-Aufruf soll dann dynamisch gefüllt werden.

So wie ich es jetzt hier stehen habe, funktioniert es leider nicht. Das Problem ist, dass überhaupt kein Fenster auf geht!

Danke für Eure Hilfe  !


----------



## Sven Mintel (15. Juli 2004)

Poste doch mal den Kompletten,geparsten Code..also ohne PHP oder sonstiges      servberseitiges Skript...so, wie es da zu lesen ist, kann man nur erahnen, was bspw._wktotal:EUR#coupon_ sein soll... das ist aber für eine "Diagnose" nicht ausreichend.


----------



## bennihaag (15. Juli 2004)

Ok, kein Problem.

{!wktotal:EUR#coupon} ist übrigens die Variable des Shops, die für den Gesamtbetrag steht.


Hier der komplette Code:


```
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="xxxxxxxx">
<title>Ihre Bestellung</title>
<link rel="stylesheet" href="xxx.css">
<SCRIPT language=javascript src="scripts/xxx.js"></SCRIPT>
<SCRIPT language=javascript src="scripts/xxxxxx.js"></SCRIPT>
</head>

<BODY class="" style="MARGIN-TOP: 15px; MARGIN-LEFT: 15px" background=images/backgrd1.gif>
<DIV><IMG height=86 alt="" hspace=65 src="images/ende-1-2-33-4.gif" width=472 border=0><BR>

<FORM name=xxxx onsubmit="return validateform(this)" action=https://xxx/xxx/xxx/query.php?cp_tpl=xxx&xxx;cp_sid={.id}{.sid} method=post>
<INPUT type=hidden value=bestell_bestaetigung.html name=cp_order_confirm> 
<TABLE class=berMain cellSpacing=0 cellPadding=3 width=603 border=0>


<SCRIPT language=javascript>

for (var j = 1; j < {!wktotal:EUR#coupon}.;length; j++;)
	{
		if ({!wktotal:EUR#coupon} == "Total")
		{
		var k       = {!wktotal:EUR#coupon}.length;
		var AMOUNT      = {!wktotal:EUR#coupon}.substr(2,k);
		AMOUNT      = AMOUNT.replace(",","");
		}
		
	}
	
  	var ACCOUNTID   = "xxxx-xxxx";
  	var CURRENCY    = "EUR";
 	var DESCRIPTION = "Gesamtbetrag";
  	var NOTIFY      = "xxx@mail.de";
  	var CVC         = "yes";
  	var NAME        = "yes";
	var AUTOCLOSE   = "10";
	var url         = "http://xxx.de/xxx/Redirect.asp?AMOUNT=" + AMOUNT + "&ACCOUNTID=" + ACCOUNTID + "&CURRENCY=" + CURRENCY + "&ORDERID=" + ORDERID + "&DESCRIPTION=" + DESCRIPTION + "&NOTIFYADDRESS=" + NOTIFY + "&CCCVC=" + CVC + "&CCNAME=" + NAME + "&AUTOCLOSE=" + AUTOCLOSE";
	

	document.writeln('<input type="hidden" name="redirect" value="+url+">');
	
</SCRIPT>

<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    window.open(objForm.redirect.value);
    }
return true;
}
//-->
</script>



<TR><TD class=listHeading vAlign=center width=649 colSpan=5>Your order</TD></TR><TR><TD vAlign=center width=649 colSpan=5><STRONG>Your Address Data</STRONG></TD></TR><TR><TD class=listCell vAlign=center width=100 height=20>Name</TD>
<TD class=listCell vAlign=center width=250>{.vorname} {.name} </TD>
<TD class=berMain vAlign=center width=25>&nbsp;</TD>
<TD class=listCell vAlign=center width=100>&nbsp;Company</TD>
<TD class=listCell vAlign=center width=150>&nbsp;{.firma}</TD></TR>
<TR>
<TD class=listCell vAlign=center width=100 height=20>Street</TD>
<TD class=listCell vAlign=center width=250>{.strasse}</TD>
<TD class=berMain vAlign=center width=25>&nbsp;</TD>
<TD class=listCell vAlign=center width=100>&nbsp;Phone</TD>
<TD class=listCell vAlign=center width=150>&nbsp;{.telefon}</TD></TR>
<TR>
<TD class=listCell vAlign=center width=100 height=20>ZIP / Town</TD>
<TD class=listCell vAlign=center width=250>{.plz} {.ort}</TD>
<TD class=berMain vAlign=center width=25>&nbsp;</TD>
<TD class=listCell vAlign=center width=100>&nbsp;Email address</TD>
<TD class=listCell vAlign=center width=150>&nbsp;{.email}</TD></TR>
<TR height=20>
<TD class=listCell vAlign=center width=100 height=20>Country</TD>
<TD class=listCell vAlign=center width=250 height=20>{.land}</TD>
<TD class=berMain vAlign=center width=25 height=20>&nbsp;</TD>
<TD class=listCell vAlign=center width=100 height=20>&nbsp;Payment</TD>
<TD class=listCell vAlign=center width=150 height=20>&nbsp;{.zahlbed}</TD></TR>
<TR height=20>
<TD class=listCell vAlign=top width=100 height=20>Delivery</TD>
<TD class=listCell vAlign=top width=250 height=71 rowSpan=3><I>{.la_vorname} {.la_name}<BR>{.la_firma}<BR>{.la_strasse} <BR>{.la_plz} {.la_ort}<BR>{.la_land}</I></TD>
<TD vAlign=center width=25 height=20>&nbsp;</TD>
<TD vAlign=center width=100 height=20>
<P>&nbsp;Customer No.</P></TD>
<TD vAlign=center width=150 height=20>
<P>&nbsp;{.knr}</P></TD></TR>
<TR height=19>
<TD class=listCell vAlign=center width=100 height=19>&nbsp;</TD>
<TD vAlign=center width=25 height=19>&nbsp;</TD>
<TD vAlign=center width=100 height=19>&nbsp;Voucher No.</TD>
<TD vAlign=center width=150 height=19>&nbsp;{.orderadd_Coupon}</TD></TR>
<TR height=20>
<TD class=listCell vAlign=center width=100 height=20>&nbsp;</TD>
<TD vAlign=center width=25 height=20>&nbsp;</TD>
<TD vAlign=center width=100 height=20>&nbsp;</TD>
<TD vAlign=center width=150 height=20>&nbsp;</TD></TR>
<TR height=19>
<TD class=listCell vAlign=top width=100 height=19>Date of delivery</TD>
<TD vAlign=top width=250 height=19>{.liefertermin}</TD>
<TD vAlign=center width=25 height=19>&nbsp;</TD>
<TD vAlign=center width=100 height=20>&nbsp;</TD>
<TD vAlign=center width=150 height=19>&nbsp;</TD></TR>
<TR height=19>
<TD class=listCell vAlign=center align=right width=356 colSpan=2 height=20>I want to join the CD ring:</TD>
<TD vAlign=center width=25 height=19>&nbsp;</TD>
<TD vAlign=center width=100 height=20>&nbsp;{.orderadd_CDRingBeitritt} </TD>
<TD vAlign=center width=150 height=19>&nbsp;</TD></TR>
<TR height=19>
<TD class=listCell vAlign=center align=right width=356 colSpan=2 height=20>I am already a CD ring member:</TD>
<TD vAlign=center width=25 height=19>&nbsp;</TD>
<TD vAlign=center width=100 height=20>&nbsp;{.orderadd_CDRingMitglied} </TD>
<TD vAlign=center width=150 height=19>&nbsp;</TD></TR>
<TR height=19>
<TD class=listCell vAlign=top width=100 height=19>Message</TD>
<TD vAlign=center width=543 colSpan=4 height=19>{.bemerkung}</TD></TR></TABLE>
<!-- wbsif{UserDaten} feld="zahlbed" wert="4" -->
<TABLE cellSpacing=0 cellPadding=3 width=603>

<TR>
<TD class=listheading width=350 colSpan=2><STRONG>Your bank account</STRONG></TD></TR>
<TR>
<TD class=listCell width=100>Bank</TD>
<TD width=250 bgColor=#ffffff><INPUT onblur=notempty() value={.bank} name={in.bank}></TD></TR>
<TR>
<TD class=listCell>BLZ</TD>
<TD bgColor=#ffffff><INPUT onblur=notempty() value={.blz} name={in.blz}></TD></TR>
<TR>
<TD class=listCell>Account No.</TD>
<TD bgColor=#ffffff><INPUT onblur=notempty() value={.kontonr} name={in.kontonr}></TD></TR>
<TR>
<TD class=listCell>Account owner</TD>
<TD bgColor=#ffffff><INPUT value={.kontoinh} name={in.kontoinh}></TD></TR></TABLE>
<!-- wbsif{/UserDaten} --><TABLE cellSpacing=1 cellPadding=4 width=603 border=0>
<!-- wbs{Liste Warenkorb Bestellung - Typ: Detail}
      -->
<!-- wbsif{Erste Zeile} -->

<TR>
<TD class=listHeading width=512 colSpan=4>&nbsp;Your cart contains the following items:</TD>
<TD class=listHeading width=130>&nbsp;</TD></TR>
<TR>
<TD class=listHeading width=50>&nbsp;</TD>
<TD class=listHeading vAlign=center width=260>Item</TD>
<TD class=listHeading vAlign=center align=center width=25>Qty</TD>
<TD class=listHeading vAlign=center align=right width=120>Price &euro;</TD>
<TD class=listHeading vAlign=center align=right width=130>Amount &euro;</TD></TR>
<!-- wbsif{/Erste Zeile} -->
<TR>
<TD class=listCell vAlign=center align=center width=50>
<!-- wbsif{ProduktDaten} feld="vorschaubild" alt="<font size=1>mehr Info's</font>" --><IMG src="{Vorschaubild}" border=0> 
<!-- wbsif{/ProduktDaten} --></TD>
<TD class=listCell width=260>{Bezeichnungkurz} {!wkvar}</TD>
<TD class=listCell align=center width=25>{!wkmenge}</TD>
<TD class=listCell align=right width=120>{!wkpr:EUR}&nbsp; </TD>
<TD class=listCell align=right width=130>{!wkprpos:EUR}&nbsp;</TD></TR>
<!-- wbsif{Letzte Zeile} -->
<TR>
<TD class=listHeading vAlign=bottom width=383 colSpan=3><INPUT onblur=agbchecked(this) type=checkbox value=ja name={!checkAGB}><FONT color=#000099>&nbsp;I have read and accepted the General Terms and Conditions of {sd.firma} (to read click "<A href="javascript:wopen('wbs5510.tag','Service/AGB','width=700,height=900,')">Service</A>").</FONT></TD>
<TD class=listHeading align=right width=369 colSpan=2>
<TABLE class=listHeading border=0>

<TR>
<TD class=listHeading align=left width=150><FONT color=#000099>Sub total</FONT></TD>
<TD class=listHeading align=right width=100>{!wknet:EUR}&nbsp;&euro;</TD></TR>
<TR>
<TD class=listHeading align=left width=150><FONT color=#000099>P &amp; P&nbsp;</FONT></TD>
<TD class=listHeading align=right width=100>{!wklcost:EUR} &euro;</TD></TR>
<TR>
<TD><FONT color=#000099>Voucher</FONT></TD>
<TD align=right>&nbsp;<FONT color=#0d9608> 
<!-- wbsif{UserDaten} feld="orderadd_Coupon" alt="0,00&nbsp;&euro;" -->{url:http://www.xxx.de/xxx/center/wbc_chk_coupon.php?fp_ud[orderadd_Coupon]={.orderadd_Coupon}} &euro;</FONT></TD></TR>
<!-- wbsif{/UserDaten} -->
<TR>
<TD class=listHeading align=left width=150><FONT color=#000099>16% VAT incl.<BR>&nbsp;&nbsp;7%&nbsp;VAT incl.</FONT></TD>
<TD class=listHeading align=right width=100>{!wkvat1:EUR}&nbsp;&euro;<BR>{!wkvat2:EUR}&nbsp;&euro;</TD></TR>
<TR>
<TD class=listHeading align=left width=150><FONT color=#000099>Total</FONT></TD>
<TD class=listHeading align=right width=100>
<P><FONT color=#cc0000>{!wktotal:EUR#coupon}&nbsp;&euro;</FONT></P></TD></TR>
<TR></TR></TABLE></TD></TR>
<TR>
<TD vAlign=bottom width=669 bgColor=white colSpan=5>
<!-- wbsif{UserDaten} feld="orderadd_Coupon" --><FONT size=1>Your gift voucher No. <FONT color=#0d9608 size=1>{.orderadd_Coupon}</FONT><FONT size=1>&nbsp;has reduced&nbsp;the total by<FONT color=#ff0000> </FONT><FONT color=#0d9608>&euro; {url:http://www.xxx.de/xxx/center/wbc_chk_coupon.php?fp_ud[orderadd_Coupon]={.orderadd_Coupon}}</FONT>. Your orders are delivered free of charg


<!-- wbsif{/UserDaten} -->


<!-- wbsif{/Letzte Zeile} -->
<!-- wbs{/Liste Warenkorb Bestellung - Typ: Detail} -->
<TABLE style="WIDTH: 603px; HEIGHT: 44px">
<TR><TD class=berMain align=center height=40>
After sending your order please wait a moment. Under certain circumstances it may take a few seconds before the order confirmation page appears. Please don't press the "Send order" button a second time for <STRONG>this will send a second order</STRONG>.
<BR><INPUT onclick=javascript:window.print() type=button value="Print order" name=drucken>&nbsp;
<INPUT type=submit value="Send order" name=absenden>



</TD></TR></TABLE></FORM></DIV>
	</BODY>
</HTML>
```


----------



## Sven Mintel (15. Juli 2004)

Mmmh...abgesehen davon, dass die Zeile

```
for (var j = 1; j < {!wktotal:EUR#coupon}.;length; j++;)
```
rein von der Syntax her nicht hinhaut, sehe ich da weiterhin keine Variable dieses Namens.

Schön, dass die Variable dem Shop bekannt ist....Javascript kann aber nicht hexen und sich nach gutdünken beliebige Variablen aus dem Finger saugen ....

Die Variable muss in einer für Javascript üblichen Art und Weise deklariert werden:

```
var variable='wert';
```


----------



## bennihaag (16. Juli 2004)

> _Original geschrieben von fatalus _
> Mmmh...abgesehen davon, dass die Zeile
> 
> ```
> ...



? Warum: müsste diese Variable noch wo anders stehen?



> Schön, dass die Variable dem Shop bekannt ist....Javascript kann aber nicht hexen und sich nach gutdünken beliebige Variablen aus dem Finger saugen ....
> 
> Die Variable muss in einer für Javascript üblichen Art und Weise deklariert werden:
> 
> ...



Wo muss das dann hingestellt werden? Was muss ich für "variable" und was für "wert" einsetzen?

Was ist an der Syntax falsch?


----------



## Sven Mintel (16. Juli 2004)

> ? Warum: müsste diese Variable noch wo anders stehen?


 ne....das muss schon dahin....aber ein Variablenname besteht in Javscript aus Buchstaben, Ziffern und dem Unterstrich....

keine Rauten, Klammern, Doppelpunkte.....


```
for (var j = 1; j < variablenname.length; j++)
```
 wäre von der Syntax her richtig.
Auch Semilkola sind nicht dazu gedacht, sie wahllos in Skripten zu verteilen.




> Wo muss das dann hingestellt werden? Was muss ich für "variable" und was für "wert" einsetzen?


 Das muss natürlich innerhalb der Seite innerhalb irgendeines <script>-Blockes stehen....und zwar bevor auf diese Variable zugegriffen werden soll.

Wie du die Variable nennst, ist egal...solange sie aus den oben erwähnten Zeichen besteht. Unter Angabe dieses Namens kannst du von Javascript-Seite aus zugreifen.

Was der Wert sein soll, musst du wissen...ist schliesslich deine Variable.

Also im Endeffekt so:


```
var variablenname=$shopVariablen-wert;

for (var j = 1; j < variablenname.length; j++)
```
 ...wobei du anstatt des fetten den Wert der Variablen im Dokument ausgeben musst...womit keine Ahnung...bisher hast du noch nicht erwähnt, mit welcher Sprache der Shop arbeitet.


----------



## bennihaag (18. Juli 2004)

hmm...


so schaut jetzt mein Quelltext aus:


```
<SCRIPT language=javascript>


	var GESAMT = {!wktotal:EUR#coupon};

for (var j = 1; j < GESAMT.length; j++)
	{
		if (GESAMT == "Total")
		{
		var k       = GESAMT.length;
		var AMOUNT      = GESAMT.substr(2,k);
		AMOUNT      = AMOUNT.replace(",","");
		}
		
	}
	
  	var ACCOUNTID   = "xxx-xxxx";
  	var CURRENCY    = "EUR";
 	var DESCRIPTION = "Gesamtbetrag";
	var PROFILE     = "Ihr Profil"
  	var NOTIFY      = "xxx@xxx.de";
  	var CVC         = "yes";
  	var NAME        = "yes";
	var AUTOCLOSE   = "10";
	var url         = "http://xxx.de/xxx/Redirect.asp?AMOUNT=" + AMOUNT + "&ACCOUNTID=" + ACCOUNTID + "&CURRENCY=" + CURRENCY + "&ORDERID=" + ORDERID + "&DESCRIPTION=" + DESCRIPTION + "&NOTIFYADDRESS=" + NOTIFY + "&CCCVC=" + CVC + "&CCNAME=" + NAME + "&AUTOCLOSE=" + AUTOCLOSE";


	document.writeln('<input type="hidden" name="redirect" value="'+url+'">');
	
</SCRIPT>
```

Die Javascript-Konsole im Firefox sagt gibt folgenden Fehler aus:

Fehler: missing variable name
Quelldatei: http://www.xxx.de
Zeile: 29, Spalte: 17
Quelltext:
	var GESAMT = 18,90;



Online schaut das ganze jetzt so aus:





```
<SCRIPT language=javascript>


	var GESAMT = 18,90;

for (var j = 1; j < GESAMT.length; j++)
	{
		if (GESAMT == "Total")
		{
		var k       = GESAMT.length;
		var AMOUNT      = GESAMT.substr(2,k);
		AMOUNT      = AMOUNT.replace(",","");
		}
		
	}
	
  	var ACCOUNTID   = "xxxxx-xxxxxx";
  	var CURRENCY    = "EUR";
 	var DESCRIPTION = "Gesamtbetrag";
	var PROFILE     = "Ihr Profil"
  	var NOTIFY      = "xxx@xxx.de";
  	var CVC         = "yes";
  	var NAME        = "yes";
	var AUTOCLOSE   = "10";
	var url         = "http://xxx.de/xxx/Redirect.asp?AMOUNT=" + AMOUNT + "&ACCOUNTID=" + ACCOUNTID + "&CURRENCY=" + CURRENCY + "&ORDERID=" + ORDERID + "&DESCRIPTION=" + DESCRIPTION + "&NOTIFYADDRESS=" + NOTIFY + "&CCCVC=" + CVC + "&CCNAME=" + NAME + "&AUTOCLOSE=" + AUTOCLOSE";


	document.writeln('<input type="hidden" name="redirect" value="'+url+'">');
	
</SCRIPT>




<script type="text/javascript">
<!--
function validateform(objForm)
{
if(typeof objForm.redirect=='object')
    {
    window.open(objForm.redirect.value);
    }
return true;
}
//-->
</script>
```



Und das komische:

Es öffnet sich mit dem Klick "Send Order" zur Zeit gar kein neues Fenster. Zum Test habe ich dann aus dem "+url+" im Redirect-Aufruf einfach mal http://www.xxx.de geschrieben: es ging auch nichts.

Dann habe ich im Javascript nur noch die Zeile mit dem document.writeln stehen lassen und wieder statt "+url+" http://www.xxx.de geschrieben.
Dann hat sich ein Fenster mit hrrp://www.xxx.de geöffnet!

Komisch, oder?


----------



## Sven Mintel (18. Juli 2004)

Wie wärs damit:

```
var GESAMT = '18,90';
```
 ....

18,90 ist keine Zahl, sondern eine Zeichenkette... in Javascript wird bei Zahlen als Komma nur der Punkt akzeptiert.

Wenn du einer Variable eine Zeichenkette als Wert zuweisen willst, musst du diese Zeichenkette in Anführungszeichen setzen, da sonst eine Variable,Zahl oder der Rückgabewert einer Funktion erwartet wird(was in diesem Fall nicht gegeben ist)


----------



## bennihaag (18. Juli 2004)

Danke, das klingt logisch.


Jetzt kommt aber folgende Fehlermeldung:


Fehler: unterminated string literal
Quelldatei: http://www.xxx.de
Zeile: 49, Spalte: 38
Quelltext:
 + NAME + "&AUTOCLOSE=" + AUTOCLOSE + ";



Und die ganzen Variablen sind online immer noch nicht  ausgefüllt!

Irgendwo steckt da der Fehlerteufel, aber wo?


----------



## Sven Mintel (18. Juli 2004)

Dann schau dir die Zeile doch an....am Ende beginnst du, den String zu erweitern, führst das aber nicht zu Ende....es fehlt am Ende ein den String beendendes Anführungszeichen(was die Fehlermeldung besagt).

Bei allem was Recht ist... ich möcht hier  nicht den "HUMAN DEBUGGER" geben.


Abgesehen davon brauchst du nicht jedesmal erwähnen, dass es noch nicht funktioniert....wenn ein Fehler drinnen ist, dann funktioniert es halt nicht...auch nicht auszugsweise.


----------



## bennihaag (18. Juli 2004)

> Bei allem was Recht ist... ich möcht hier nicht den "HUMAN DEBUGGER" geben.


sorry! der "HUMAN DEBUGGER" ist aber nicht schlecht!


Na klar, jetzt gehts!


Checkst Du mal bitte deinen Posteingang der  Privaten Nachrichten hier im Forum?!
Danke!


----------

