zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Übergabe des href an die JS-Function klappt nicht

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 18.10.2013, 11:25
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 21.04.2010
Ort: Schweizky
Beiträge: 18
Kangooroo befindet sich auf einem aufstrebenden Ast
Standard Übergabe des href an die JS-Function klappt nicht

Hallo zusammen

Ich suche schon seit Stunden... aber das gejammer kennt ihr sicher alle schon.

Meine Zielsetzung:
Ich habe einen simplen Filemanager für Up/Downloads zum Dokumente-Austausch erstellt. In diesem gibts auch eine Löschfunktion. Diese wird auf einer anderen Seite via Parameterübergabe (Dateipfad auf dem Server) ausgeführt. Vor dem Löschen erscheint ein Dialog "Löschen: JA / NEIN". Erst danach wird auf die Lösch-Seite weitergeleitet.

Das funktioniert alles:
Der Filemanager und die Löschfunktion passen wunderbar zusammen. Nur schade ist, dass keine "Sind Sie sicher?"-Abfrage kommt. Dateien könnten so schnell mal aus Versehen gelöscht werden. Also habe ich eine simple Lösung gefunden, welche optisch auch noch gut aussieht: jQuery msgBox. Diese habe ich eingebunden und wird auch angezeigt.

Alternativ dazu könnte ich auch die jQuery-Dialogbox nehmen. Dialog | jQuery UI. Ich denke aber nicht, dass sich so mein Problem lösen würde.

Mein Problem:
Wenn ich auf JA, Datei löschen klicke, wird der Browser an die URL www.meine-url.ch/undefined weitergeleitet. Aus meiner Sicht wird der Link (HREF) nicht an die JS-Function übergeben. Das Problem liegt also nicht am Filemanager, an der Löschfunktion oder an der Message-Box. Unten die Ausschnitte aus dem Code. Ich vermute, dass ich einen Anfängerfehler gemacht habe. Aber im Moment sitze ich mit meinen Gedanken in einer Sackgasse fest und komme nicht weiter.

JavaScript im Head:
Code:
<script type="text/javascript">
function fragebox() {
	$.msgBox({
		title: "Datei l&ouml;schen",
		content: "Wollen Sie diese Datei wirklich unwiederruflich l&ouml;schen?",
		type: "confirm",
		buttons: [{ value: "Ja" }, { value: "Nein" }],
		success: function (result) {
		if (result == "Ja") {
			window.location.href = this.href;
			}
		}
	});
}
</script>
Delete-Link im BODY:
HTML-Code:
<a href="http://www.meine-url.ch/filemanager_delete.asp?PATH=d:\meine-url\files\unterordner\dateiname.pdf" onClick="fragebox(); return false;">
    <img src="http://www.meine-url.ch/template/design/delete.png" alt="">
</a>
Ich hoffe auf Unterstützung und bedanke mich schon jetzt für Eure Bemühungen.

Gruss
Kangooroo
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 18.10.2013, 16:11
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Lösch- und Updateaktionen sollten niemals per GET sondern immer per POST übertragen werden. Allein schon der Sicherheit wegen.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 18.10.2013, 17:19
Neuer Benutzer
neuer user
 
Registriert seit: 17.10.2013
Beiträge: 9
Jörg befindet sich auf einem aufstrebenden Ast
Standard

"this" ist in deinem Fall nicht der link. Daher kann das nicht funktionieren. Du müsstest schon "this" als Parameter in der onClick Anweisung angeben. Da ist aber komplett was im Argen. Gerade mit JQuery gibts da einige Möglichkeiten das zu lösen.

Hier die einfachste Möglichkeit, aber nicht die eleganteste:

Code:
<a href="javascript:fragebox('http://www.meine-url.ch/filemanager_delete.asp?PATH=d:\\meine-url\\files\\unterordner\\dateiname.pdf')">
    <img src="http://www.meine-url.ch/template/design/delete.png" alt="">
</a>

die Funktion umbauen:
Code:
function fragebox(url) {
	$.msgBox({
		title: "Datei l&ouml;schen",
		content: "Wollen Sie diese Datei wirklich unwiederruflich l&ouml;schen?",
		type: "confirm",
		buttons: [{ value: "Ja" }, { value: "Nein" }],
		success: function (result) {
		if (result == "Ja") {
			window.location.href = url;
			}
		}
	});
}
Achte auf die doppelten \ in der URL.

oder auch so:

Code:
<a href="http://www.meine-url.ch/filemanager_delete.asp?PATH=d:\meine-url\files\unterordner\dateiname.pdf" onClick="fragebox(this); return false;">
    <img src="http://www.meine-url.ch/template/design/delete.png" alt="">
</a>
function fragebox(elm) {
	$.msgBox({
		title: "Datei l&ouml;schen",
		content: "Wollen Sie diese Datei wirklich unwiederruflich l&ouml;schen?",
		type: "confirm",
		buttons: [{ value: "Ja" }, { value: "Nein" }],
		success: function (result) {
		if (result == "Ja") {
			window.location.href = elm.href;
			}
		}
	});
}
oder

Code:
window.location.href = $(elm).attr('href');
__________________
Blog
Mit Zitat antworten
  #4 (permalink)  
Alt 18.10.2013, 23:30
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 21.04.2010
Ort: Schweizky
Beiträge: 18
Kangooroo befindet sich auf einem aufstrebenden Ast
Standard

@Jörg
Danke für Deine Unterstützung. Ich werde es in Kürze ausprobieren und berichten.

@explanator
Das ist mir schon auch bewusst. Die ganze Oberfläche verbirgt sich aber hinter einem Login. Und die Dateien auf dem Server sind i.d.R. PDF-Dateien mit sehr geringem Geheimhaltungsgrad sowie niedrigem Informationswert für Aussenstehende.

Gruss
Kangooroo
Mit Zitat antworten
  #5 (permalink)  
Alt 20.10.2013, 12:03
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.949
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Es geht nicht um Geheimhaltung, sondern darum dass die Daten nicht (aus versehen) gelöscht werden. Aber wenn das auch egal ist...
Mit Zitat antworten
  #6 (permalink)  
Alt 20.10.2013, 12:20
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 21.04.2010
Ort: Schweizky
Beiträge: 18
Kangooroo befindet sich auf einem aufstrebenden Ast
Standard

Ja, deshalb eben die Confirmation-Box.
Mit Zitat antworten
  #7 (permalink)  
Alt 20.10.2013, 12:22
Neuer Benutzer
neuer user
 
Registriert seit: 17.10.2013
Beiträge: 9
Jörg befindet sich auf einem aufstrebenden Ast
Standard

Mal abgesehen davon, dass ich auch über Ajax posten würde - schon allein um den Prozess im Hintergrund halten zu können, spielt das eigentlich nicht wirklich eine große Rolle. Solange die delete URL nicht öffentlich aufrufbar ist und kein gültiger Parameter übergeben wird.

Selbst mit F5 (oder Browser Back Button) kann man bei dieser Lösung nicht mehr viel Schaden anrichten, die Datei ist ja schon gelöscht. Ob das jetzt elegant ist, ist wieder eine ganze andere Frage.


Mit Ajax und JQuery könntest du das schon besser lösen, da du dann die Seite nicht verlassen musst und auch auf mögliche Fehler reagieren könntest. Aber wenns es nur ein kleines Projekt ist, dann funktioniert das wie oben beschrieben schon so.


@protonenbeschleuniger
oder was genau sind deine Bedenken?
__________________
Blog
Mit Zitat antworten
  #8 (permalink)  
Alt 20.10.2013, 15:20
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.949
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Kangooroo Beitrag anzeigen
Ja, deshalb eben die Confirmation-Box.
Was genau nichts nutzt.

Solche URL landen im Logfile und bieten dann potentiell eine Falle, da manchmal solche Logfiles ausgewertet werden und dann sind URLs öffentlich machen.

Es ist einfach eine potentielle Falle, in die auch schon Profis hingetappt sind.
Mit Zitat antworten
  #9 (permalink)  
Alt 20.10.2013, 16:33
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Kangooroo Beitrag anzeigen
Der Filemanager und die Löschfunktion passen wunderbar zusammen. Nur schade ist, dass keine "Sind Sie sicher?"-Abfrage kommt. Dateien könnten so schnell mal aus Versehen gelöscht werden.
Problem schon mal richtig erkannt. Aber Javascript bietet keine Sicherheit.
Bots, Suchmaschinencrawler sowie Browser-Add-ons kennen kein Erbarmen und folgen gnadenlos jeden Link.

Einziger Schutz. Daten per POST senden und allen von aussen hereinkommenden Angaben zu misstrauen.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 20.10.2013, 23:38
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 21.04.2010
Ort: Schweizky
Beiträge: 18
Kangooroo befindet sich auf einem aufstrebenden Ast
Daumen hoch

Danke für die Ratschläge. Ich erklär kurz im Detail, wie's mit der gesamten Geschichte aussieht:
  • Die Website arbeitet serverseitig mit ASP
  • Der Filemanager ist hinter einem Login
  • Nur ein einziger Nutzer benutzt dieses Login
  • Alle Seiten innerhalb des Logins werden auf eine gültige Session geprüft
  • Die Löschfunktion ist eine eigenständige Seite ohne HTML-Inhalt. Also nur ASP
  • Löschen ohne gültige Session wird nicht ausgeführt, sondern der User wird zur Login-Seite umgeleitet

Ich hoffe, ich konnte Eure Bedenken minimieren. An der Sicherheit könnte ich noch hochschrauben, ist aber echt nicht nötig. Danke nochmlas für Eure Inputs.

Gruss
Kangooroo
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
confirm, fehler, href, javascript, link, messagebox, problem, übergabe

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JavaScript und mobile Weiterleitung sven.le Javascript & Ajax 7 08.07.2013 15:59
Slider Nav crixon Javascript & Ajax 0 30.01.2012 14:33
Zustand des Internets: Das Web wird langsamer Pascolo Offtopic 11 23.10.2009 11:55
Problem mit z-index Unearth CSS 10 23.04.2009 07:49
Ratschläge bei Publizierung eines fertigen Layouts gesucht Black Fladder CSS 55 05.09.2004 15:30


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:55 Uhr.