2013-01-03 14 views
6

पर जावास्क्रिप्ट में रूट वेबसाइट यूआरएल प्राप्त करें सत्र सत्र के बाद मैं अपनी वेबसाइट के प्रत्येक पृष्ठ से लॉगिन पेज पर रीडायरेक्ट करना चाहता हूं। मैं प्रवेश पृष्ठ पर विंडो स्थान सेट करने का प्रयास:रीडायरेक्ट

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

लेकिन "~" असमर्थित हो रहा है। मेरा लॉगिन पेज मेरे रूट फ़ोल्डर के नीचे स्थित है।

उदाहरण के लिए

: * http: // सर्वर/वेबसाइट/ * Login.aspx

मैं कैसे जावास्क्रिप्ट में इस यूआरएल मिल सकता है?

बहुत बहुत धन्यवाद,

इनबल।

+1

अपने 'window.parent.location.href' की सामग्री क्या है? – Cerbrus

उत्तर

2

~ क्यों उपयोग करें? पहली नज़र में मैं कहूंगा कि इसे हटाने से आपकी समस्या हल हो जाती है। इस प्रकार सं.

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

[संपादित करें] पहली टिप्पणी का जवाब ...

मैं इस चाल कर सकता है विश्वास करते हैं:

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

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

मैंने कोशिश की ... लेकिन यदि मेरा वर्तमान पृष्ठ उदाहरण के लिए है: http: //server/website/Pages/Page.aspx, तो मुझे document.location.href = http: // सर्वर/वेबसाइट/पेज/लॉगिन मिलता है। एएसपीएक्स जो वास्तव में नीचे स्थित है: http: //server/website/Login.aspx – Inbal

1

"/ वेबसाइट" भाग आम तौर पर सर्वर साइड जानकारी है। कोई भी तरीका जावास्क्रिप्ट स्वयं ही यह निर्धारित नहीं कर सकता है।

तो आपको सर्वर से क्लाइंट को पास करना होगा। आप एक बार में "http: // सर्वर/वेबसाइट" को भी पास कर सकते हैं।

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

आप इस तरह इसका इस्तेमाल कर सकते हैं:

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

मेरी समारोह और पहले उत्तर के बीच अंतर यह है कि एक "/" में सर्वर/पेज पर रीडायरेक्ट करेगा और मेरे कोड रीडायरेक्ट करेगा (आपका उदाहरण यूआरएल) सर्वर/वेबसाइट/पेज पर।

+0

धन्यवाद! लेकिन यह वास्तव में पहले समाधान की तरह काम करता है। यदि मेरा वर्तमान पृष्ठ उदाहरण के लिए है: सर्वर/वेबसाइट/पेज/पेज.एएसपीएक्स, तो मुझे दस्तावेज़.location.href = http: //server/website/Pages/Login.aspx मिलता है जो वास्तव में नीचे स्थित है: http: // सर्वर/वेबसाइट/login.aspx – Inbal

+1

आह, ठीक उसी स्थिति में आप केवल जावास्क्रिप्ट का उपयोग नहीं कर सकते हैं। वास्तविक URL की गणना करने के लिए आपको सर्वर-पक्षीय भाषा जैसे सी # या PHP का उपयोग करने की आवश्यकता है। –

9

मैं window.location.origin का उपयोग करूंगा। यह आपके लिए पहला हिस्सा वापस कर देगा और उसके बाद उरी माता-पिता यूआरएल को एन्कोड करेगा और यह हो गया है!

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

window.location.href = loginUrl; 

क्रॉस ब्राउज़र कार्यक्षमता के लिए एक छोटी सी युक्ति window.location का उपयोग करना है। यह सभी अनुपालन ब्राउज़रों पर पढ़ा/लिखना है। जबकि दस्तावेज़। स्थान केवल कुछ (यानी) में पढ़ा जाता है।

0

यह फ़ंक्शन वर्तमान यूआरएल के रूट (बेस) यूआरएल को वापस कर देगा।

आपके पास कुछ की तरह: http://www.example.com/something/index.html आप चाहते हैं: http://www.example.com/something/

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

यहाँ विवरण: Javascript: Get base URL or root URL

0

मैं सामान्य रूप से एक "settings.js" फ़ाइल जिसमें मैं के लिए सेटिंग्स का एक संग्रह की दुकान बनाने आवेदन।इस मामले में:

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

और उसके बाद स्क्रिप्ट में, उदाहरण के लिए मैं

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

0

मैं PerKristian के जवाब संशोधित तो यह मेरी स्थिति में काम करेगा कहते हैं,

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

पहले अकेले/

तक सब कुछ मेल खाता है

उदाहरण

के लिए

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

वापस आ जाएगी http://stackoverflow.com