Autor |
Nachricht |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 12.11.2009 15:13
Titel [JavaScript] - Cookies auslesen / trennen - an ASP übergeben |
|
|
Hallo zusammen,
ich habe folgendes Problem.
Es gibt ein Formular welches durch den Nutzer erweitert werden kann.
Also zum Beispiel mehrere FileUploads oder Texteingabefelder etc.
Diese neuen Felder generiere ich durch JavaScript.
Später sollen die Formular Elemente mittels ASP ausgewertet und in einer DB gespeichert werden.
Da die Programmierung nicht wissen kann wieviele Elemente schlußendlich abgeschickt werden,
habe ich mir die Anzahl der Elemente die vervielfälltigt werden können in JavaScript Cookies gespeichert.
Das funktioniert auch soweit alles.
Code: | <!-- #include file="inc/db_open.asp" -->
<!doctype html>
<html lang="de">
<head>
<title>test</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Language" content="de" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<style type="text/css" media="screen">
<!--
h2 + div {
display:none;
}
em {
color:blue;
}
label {
display:inline-block;
width:100px;
}
textarea {
width:300px;
height:150px;
}
-->
</style>
<script type="text/javascript" src="../library/jquery-1.3.2.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
$('h2').click(function(){
if ($(this).next('div').is(":hidden")) {
$(this).next('div').slideDown('slow');
} else {
$(this).next('div').slideUp('slow');
}
});
$('#new-absatz').click(function(){
var z = 0;
var y = document.getElementsByTagName('textarea');
for (var i = 0; i < y.length; i++){
if(y[i].id.indexOf('absatz') != -1) {
z++;
}
}
z = z + 1;
$(this).before('<textarea id="absatz' +z+ '"></textarea><br><br>');
document.cookie = "absatz=" +z;
alert (document.cookie);
return;
});
$('#new-file').click(function(){
var z = 0;
var y = document.getElementsByTagName('input');
for (var i = 0; i < y.length; i++){
if (y[i].type != 'file') {
continue;
} else {
if (y[i].id.indexOf('data') != -1) {
z++;
}
}
}
z = z + 1;
$(this).before('<input type="file" id="data' +z+ '"><br><br>');
document.cookie = "file=" +z;
alert(document.cookie);
return;
});
});
//-->
</script>
</head>
<body>
<header>
<h1>Multiple Form</h1>
</header>
<hr>
<section id="aktionen">
<h2>Kat</h2>
<div id="kategorie">
<form id="create-kategorie" action="save.asp" method="post">
<label for="bezeichnung-kat">Description</label>
<input type="text" id="bezeichnung-kat">
<input type="submit" id="send-kat" value="save">
</form>
</div>
<hr>
<h2>Theme</h2>
<div id="theme">
<form id="create-theme" action="save.asp" method="post" enctype="multipart/form-data">
<label for="bezeichnung-theme">Description</label>
<input type="text" id="bezeichnung-theme">
<br>
<label for="headline">Headline</label>
<input type="text" id="headline">
<br><br>
<textarea id="absatz1"></textarea>
<br><br>
<strong id="new-absatz">> one more textarea</strong>
<br><br>
<input type="file" id="data1">
<br><br>
<strong id="new-file">> one more file </strong>
<br><br>
<input type="submit" id="send-theme" value="save">
</form>
</div>
</section>
<br><br><br><br>
</body>
</html>
<!-- #include file="inc/db_close.asp" --> |
Auf der Seite der Auswertung kommen die Cookies aus richtig an.
Wie folgt zu sehen
Nur stehe ich grad auf dem Schlauch diese Cookies zu trennen.
Dh. ich möchte nun die Werte von file und absatz gesondert behandeln wollen.
Hat mir jemand einen Tipp wie ich das schaffe.
Danke.
Zuletzt bearbeitet von Kash am Do 12.11.2009 17:15, insgesamt 1-mal bearbeitet
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
|
|
|
|
Anzeige
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 12.11.2009 15:28
Titel
|
|
|
Vielen Dank.
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 12.11.2009 17:20
Titel
|
|
|
So ich bin jetzt schon ein stückchen weiter.
Folgend werte ich das JavaScript Cookie aus.
Code: | window.onload = function (){
a = document.cookie;
cookiename1 = a.substring(0,a.search('='));
cookiewert1 = a.substring(a.search('=')+1,a.search(';'));
if(cookiewert1 == '') {
cookiewert1 = a.substring(a.search('=')+1,a.length);
}
a = a.substring(a.search(';')+1,a.length);
cookiename2 = a.substring(0,a.search('='));
cookiewert2 = a.substring(a.search('=')+1,a.search(';'));
if(cookiewert2 == ''){
cookiewert2 = a.substring(a.search('=')+1,a.length);
}
window.location.href='save2.asp?c1=' +cookiewert1+ '&c2=' +cookiewert2;
return;
} |
Gleichzeitig gebe ich die Werte an das ASP Script weiter, damit ich damit arbeiten kann.
ASP Script
Code: | <!-- #include file="inc/db_open.asp" -->
<%
cw1 = request.querystring("c1")
cw2 = request.querystring("c2")
headline = request.form("headline")
response.write cw1 & "<br><br>"
response.write cw2 & "<br><br>"
response.write headline
%>
<!-- #include file="inc/db_close.asp" -->
|
Problem dabei ist, das die Formulardaten verloren gehen.
Das ist natürlich misst.
Hat mir jemand einen Gedankenanstoß wie ich diese mit übergeben kann?
Meine Überlegung war, diese ersteinmal zu sammeln und an eine seperate JS Funktion zu übergeben,
die dann die Cookie Werte und die Formulardaten weiterleitet.
Das als Querystring.
Das geht doch sicherlich einfacher.
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 12.11.2009 17:29
Titel
|
|
|
Schreib die Inhalte der Javascript Cookies einfach in hidden input Elemente des Formulars …
Zuletzt bearbeitet von m am Do 12.11.2009 17:30, insgesamt 1-mal bearbeitet
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 12.11.2009 17:32
Titel
|
|
|
m hat geschrieben: | Schreib die Inhalte der Javascript Cookies einfach in hidden input Elemente des Formulars … |
Das ist eine gute Idee.
Nur grad wegen dem Ablauf.
In der Action vom Formular lade ich quasi die Seite neu und rufe eine Funktion auf die die Hidden Fields produziert.
Dann habe ich aber ja dennoch nicht die Möglichkeit das Formular abzusenden.
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 12.11.2009 18:08
Titel
|
|
|
Ok, mal wieder zu kompliziert gedacht
Ich benötige bei meinem Vorhaben im Grunde keine JavaScript Cookies.
Dein Vorschlag m reicht vollkommen aus.
So kann ich z direkt beim erstellen von neuen Elementen als value des Hiddenfields übergeben.
Code: |
<script type="text/javascript">
<!--
$(document).ready(function(){
$('h2').click(function(){
if ($(this).next('div').is(":hidden")) {
$(this).next('div').slideDown('slow');
} else {
$(this).next('div').slideUp('slow');
}
});
$('#new-absatz').click(function(){
var z = 0;
var y = document.getElementsByTagName('textarea');
for (var i = 0; i < y.length; i++){
if(y[i].id.indexOf('absatz') != -1) {
z++;
}
}
z = z + 1;
$(this).before('<textarea id="absatz' +z+ '"></textarea><br><br>');
document.cookie = "absatz=" +z;
document.getElementById('hidden-absatz').value = z;
return;
});
$('#new-file').click(function(){
var z = 0;
var y = document.getElementsByTagName('input');
for (var i = 0; i < y.length; i++){
if (y[i].type != 'file') {
continue;
} else {
if (y[i].id.indexOf('data') != -1) {
z++;
}
}
}
z = z + 1;
$(this).before('<input type="file" id="data' +z+ '"><br><br>');
document.cookie = "file=" +z;
document.getElementById('hidden-file').value = z;
return;
});
});
//-->
</script> |
Das klappt allerdings erst nach einem reload der seite.
Warum das?
// Ok jetzt klappt es. Dem Value muß definitiv ein default-value gegeben werden.
Ich setze standard die 1 und gut ist.
Danke m für deinen Tipp.
Zuletzt bearbeitet von Kash am Do 12.11.2009 18:25, insgesamt 2-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
id aus url auslesen und an link übergeben
Multiple Javascript Cookies
ID aus Datenbank in Javascript mit übergeben
Value eines Radiobuttons an Javascript übergeben
Javascript: Parameter übergeben und aufrufen?
GELÖST Bildschirmposition als Variable übergeben(Javascript)
|
|