2013-01-03 155 views
6

Desidero reindirizzare alla pagina di accesso da ogni pagina del mio sito Web dopo il timeout della sessione. cerco di impostare window.location alla pagina di login:Ottieni l'URL del sito Web di root in javascript per il reindirizzamento

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

ma "~" sembra essere supportato. la mia pagina di accesso si trova nella mia cartella principale.

ad esempio: * http: // server/sito/ * Login.aspx

Come posso ottenere questo URL in javascript?

Grazie mille,

Inbal.

+1

Qual è il contenuto del tuo 'window.parent.location.href'? – Cerbrus

risposta

2

Perché utilizzare ~? A prima vista direi che rimuoverlo risolve il tuo problema. Come questo.

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

[EDIT] rispondendo a primo commento ...

credo che questo potrebbe fare il trucco:

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

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

Ho provato ... ma se la mia pagina corrente è ad esempio: http: //server/website/Pages/Page.aspx, così ottengo document.location.href = http: // server/sito Web/Pagine/Login. aspx che si trova in realtà: http: //server/website/Login.aspx – Inbal

1

La parte "/ sito web" è tipicamente informazioni lato server. In nessun modo il codice JavaScript può determinarlo da solo.

Quindi dovrai passare questo dal server al client. Potresti anche passare "http: // server/website" in una volta.

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

Si può usare in questo modo:

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

La differenza tra la mia funzione e la prima risposta è che un "/" reindirizza al server/page e il mio codice reindirizzerà (nella vostra esempio URL) al server/sito Web/pagina.

+0

Grazie! ma funziona esattamente come la prima soluzione. Se la mia pagina corrente è ad esempio: server/sito Web/Pagine/Page.aspx, così ottengo document.location.href = http: //server/website/Pages/Login.aspx che in realtà si trova sotto: http: // server/sito web/Login.aspx – Inbal

+1

Ah, beh in tal caso non è possibile utilizzare solo Javascript. Per calcolare l'URL reale è necessario utilizzare un linguaggio lato server come C# o PHP. –

9

Vorrei usare window.location.origin. Restituirà la prima parte per te e dopo di ciò solo Uri codificherà l'url genitore ed è fatto!

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

window.location.href = loginUrl; 

Un piccolo suggerimento per la funzionalità cross browser è utilizzare window.location. È in lettura/scrittura su tutti i browser compatibili. Mentre document.location viene letto solo in alcuni (cioè).

0

Io di solito creare un file "settings.js" in cui memorizzare una serie di impostazioni per la applicazione.In questo caso:

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

e poi nello script, per esempio io chiamo

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

0

Ho modificato la risposta di PerKristian in modo che avrebbe funzionato nella mia situazione,

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

corrisponde a tutto fino al primo solo/

per esempio

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

tornerà http://stackoverflow.com

Problemi correlati