Ich habe ein Pseudo-Benutzersteuerelement für eine Website erstellt in klassischen ASP geschrieben. Das Steuerelement ist einfach eine Asp-Seite (mit vollständigen HTML-Headern und Text), die sich in einem iframe auf der übergeordneten Seite befindet. Es ging darum, eine AJAX-ähnliche Oberfläche für das asynchrone Hochladen von Dateien zu erstellen (die übergeordnete Seite enthält ein großes Formular und ich wollte die Dateien nicht hochladen und den Rest des Formulars zur gleichen Zeit absenden).
Das Problem ist, ich habe eine Menge Probleme mit relativen URLs in der Iframe-Seite/Benutzer-Steuerelement verwendet. Je nachdem, welche Seite ist die iframe ein Kind, die relative URL Basis Lage nach dem Verzeichnis zu ändern scheint, dass bestimmte Seite in istErmitteln Sie eine absolute URL zu einer Ressource mithilfe von VBScript/classic asp
. Beispiel: www.website.com/directory1/application1.asp
...
<form>
<input>
...
<iframe src="../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/directory1/directory2/application2.asp
...
<form>
<input>
...
<iframe src="../../controls/FileUpload.asp"/>
...
</form>
...
www.website.com/controls/FileUpload.asp
...
<form method="post" enctype="multipart/form-data" action="FileUpload.asp"><!--problem here-->
<input type="file">
<input type="submit"/>
</form>
Die iframe src-Pfade funktionieren ordnungsgemäß (beachten Sie, dass der Pfad, der tiefer in ein Verzeichnis eingebettet ist, einen zusätzlichen doppelten Punkt enthält). Im Code für die Seite FileUpload.asp funktionieren relative URLs jedoch nicht konsistent. Die URL, die ich im Aktionsattribut für das Formular-Tag habe, funktioniert, wenn Sie die Seite einfach so wie sie ist laden, nicht in einem Iframe einer anderen Seite. Sie können es in "../controls/FileUpload.asp" ändern und es wird auf der ersten Anwendungsseite funktionieren, aber Sie müssen ein weiteres "../" hinzufügen, damit es auf der zweiten Anwendungsseite funktioniert.
Ich frage mich, ob es vielleicht einen Weg mit VBScript gibt, um die absolute URL zu einer bestimmten Datei zu finden. Ich benutze eine Include-Datei, in die ich das hart codieren könnte, aber ich würde lieber nicht, wenn das möglich ist. Irgendwelche anderen Ideen?
Ja. Das ist es. Dumm von mir wirklich. – rdevitt
Kein Problem, in der Tat mache ich das immer so, egal was passiert, falls ich etwas umherbewege, einen zusätzlichen Ordner oder was auch immer hinzufüge. – Breadtruck
Ich habe am Ende Request.ServerVariables ("URL") verwendet, da ich gerade zurück auf die gleiche Seite posten. Dies scheint eine ziemlich konsistente Möglichkeit zu sein, auf die Ressource zuzugreifen, unabhängig davon, auf welchem Server sie gehostet wird und in welchen Unterverzeichnissen sich die Site befindet. – rdevitt