2013-01-03 4 views
6

Ich möchte nach jeder Sitzungszeitüberschreitung von jeder Seite auf meiner Seite zur Anmeldeseite umleiten. Ich versuche window.location zur Login-Seite zu setzen:Holen Sie sich Root-Website-URL in JavaScript für Redirect

var ParentUrl = encodeURIComponent(window.parent.location.href); 
document.location.href = "~/Login.appx?ReturnUrl=" + ParentUrl; 

aber "~" scheint nicht mehr unterstützt. Meine Login-Seite befindet sich unter meinem Stammordner.

zum Beispiel: * http: // server/website/ * Login.aspx

Wie kann ich diese URL in Javascript bekommen?

Vielen Dank,

Inbal.

+1

zurückkehren Was ist der Inhalt Ihrer 'window.parent.location.href'? – Cerbrus

Antwort

2

Warum verwenden? Auf den ersten Blick würde ich sagen, dass das Entfernen Ihr Problem löst. So was.

document.location.href = "/Login.appx?ReturnUrl=" + ParentUrl; 

[EDIT] Zur ersten Kommentar reagiert ...

Ich glaube, das den Trick tun könnte:

function getLoginPage() { 
    var urlParts = document.location.href.split("/"); 
    return "/" + urlParts[2] + "/" + urlParts[3] + "/Login.aspx"; 
} 

document.location.href = getLoginPage() + "?ReturnUrl=" + ParentUrl; 
+0

Ich habe versucht ... aber wenn meine aktuelle Seite ist zum Beispiel: http: //server/website/Pages/Page.aspx, so bekomme ich document.location.href = http: // Server/Website/Pages/Login. ASPX, die tatsächlich unter befindet: http: //server/website/Login.aspx – Inbal

1

Die "/ Webseite" Teil ist in der Regel Server-Seite Informationen. Keineswegs kann JavaScript das selbst bestimmen.

Also müssen Sie dies vom Server an den Client übergeben. Sie könnten auch "http: // server/website" auf einmal übergeben.

1
function getURL() { 
    var arr = window.location.href.split("/"); 
    delete arr[arr.length - 1]; 
    return arr.join("/"); 
} 

Sie können es wie folgt verwenden:

document.location.href = getURL() + "Login.appx?ReturnUrl="; 

Der Unterschied zwischen meiner Funktion und der ersten Antwort ist, dass ein „/“ wird auf Server/Seite umleiten und mein Code umleiten (in Ihrem Beispiel URL) zu Server/Website/Seite.

+0

Vielen Dank! aber es funktioniert genau wie die erste Lösung. Wenn meine aktuelle Seite beispielsweise lautet: server/website/Pages/Page.aspx, so bekomme ich document.location.href = http: //server/website/Pages/Login.aspx, das sich tatsächlich unter http: // befindet. Server/Website/Login.aspx – Inbal

+1

Ah, in diesem Fall können Sie nicht nur Javascript verwenden. Sie müssen eine serverseitige Sprache wie C# oder PHP verwenden, um die echte URL zu berechnen. –

9

Ich würde die window.location.origin verwenden. Es wird den ersten Teil für dich zurückgeben und danach einfach Uri die Eltern-URL kodieren und fertig!

var parentUrl = encodeURIComponent(window.location.href), 
    loginUrl = window.location.origin+"/Login.appx?ReturnUrl=" + parentUrl; 

window.location.href = loginUrl; 

Ein kleiner Tipp für Cross-Browser-Funktionalität ist die Verwendung von window.location. Es liest/schreibt alle kompatiblen Browser. Während document.location nur in einigen (dh) gelesen wird.

0

ich normalerweise erstellen "settings.js" Datei, in der ich speichern Sie eine Sammlung von Einstellungen für die Anwendung.In diesem Fall:

settings = { "root": "myAppRoot/" /*, ... */ };

und dann im Skript, zum Beispiel I

myDynamicDiv.load("/" + settings.root + "urlPart1/urlPart2/app"

0

I PerKristian Antwort nennen so modifiziert, dass es in meiner Situation funktionieren würde,

function getBaseUrl() { 
    var re = new RegExp(/^.*\/\/[^\/]+/); 
    return re.exec(window.location.href); 
} 

entspricht alles bis zum ersten eins/

zum Beispiel

http://stackoverflow.com/questions/14135479/get-root-website-url-in-javascript-for-redirect

wird http://stackoverflow.com

Verwandte Themen