การเปลี่ยนเส้นทางไปยัง URL ที่เกี่ยวข้องใน JavaScript


363

ฉันมีปัญหา: ฉันต้องการเปลี่ยนเส้นทางผ่าน JavaScript ไปยังไดเรกทอรีด้านบน รหัสของฉัน:

location.href = (location.href).substr(0, (location.href).lastIndexOf('folder'));

URL มีลักษณะดังนี้:

example.com/path/folder/index.php?file=abc&test=123&lol=cool

การเปลี่ยนเส้นทางมีผลกับสิ่งนี้:

example.com/path/&test=123&lol=cool

แต่ต้องการมีสิ่งนี้:

example.com/path/

ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


684

คุณสามารถทำการเปลี่ยนเส้นทางแบบสัมพันธ์:

window.location.href = '../'; //one level up

หรือ

window.location.href = '/path'; //relative to domain

29
ดูว่าทำไมคุณควรใช้window.location.replace stackoverflow.com/questions/503093/…
gideon

52
window.location.hrefเมื่อคุณต้องการที่จะจำลองการเชื่อมโยงคุณควรใช้ คุณควรใช้window.location.replaceเมื่อคุณต้องการจำลองการเปลี่ยนเส้นทาง http (ดังนั้นจึงไม่สร้างรายการประวัติ)
Benji XVI

24
โดยวิธีการที่document.locationตั้งใจไว้เป็นคุณสมบัติอ่านอย่างเดียว window.locationมันเป็นความปลอดภัยในการใช้งาน ดูคำถามนี้
Benji XVI

6
ฉันพบว่าใช้การwindow.location.href = '../'เปลี่ยนเส้นทางไปยังรูทของไซต์ไม่ใช่ "ระดับหนึ่งขึ้นไป" ตามที่คาดไว้ เมื่อหน้าปัจจุบันคือ "www.example.com/customers/list" './'ฉันต้องการที่จะใช้ ฉันเดาว่านี่เป็นเพราะ "รายการ" ไม่ถือเป็นระดับไดเรกทอรี
Marcus Cunningham

2
@MarcusCunningham ในตัวอย่างของคุณไดเรกทอรีคือ / customers / - ดังนั้น "หนึ่งระดับขึ้นไป" คือ www.example.com/ ตอนนี้หาก URL ตัวอย่างของคุณคือ www.example.com/customers/list/ - URL ดังกล่าวจะนำคุณไปที่ www.example.com/customers/
Ubeogesh

12

หากคุณใช้location.hostnameคุณจะได้รับส่วน domain.com ของคุณ จากนั้นlocation.pathnameจะให้ / path / folder ฉันจะแยกlocation.pathnameโดย / และประกอบ URL อีกครั้ง แต่ถ้าคุณไม่ต้องการคำสืบค้นคุณสามารถเปลี่ยนเส้นทางไป..ยังไดเรกทอรีด้านบน


เบราว์เซอร์ของฉันเห่าเมื่อฉันไปที่ location.pathและดูเหมือนว่าจะรับรู้location.pathnameเท่านั้น คำแนะนำ?
Konrad Viltersten

location.path ไม่ถูกต้องควรเป็น location.hostname ฉันได้เพิ่มการแก้ไขในโพสต์เพื่อแก้ไข
ygrichman

8

เปลี่ยนเส้นทางไปยัง ../


หากแอปของคุณโฮสต์ใน sub-uri และแอปไม่ทราบเส้นทาง sub-uri หากคุณอยู่ที่รูทแอปของคุณและคุณทำ .. / แอพจะไม่รู้วิธีกลับไปที่รูท ตัวอย่างเช่นแอปเดียวกันนั้นโฮสต์ที่example.com/myappและother.example.com/app2
ReggieB



2

ฉันพยายามเปลี่ยนเส้นทางเว็บไซต์ปัจจุบันของฉันไปยังส่วนอื่น ๆ ในหน้าเดียวกันโดยใช้ JavaScript รหัสติดตามนี้ใช้งานได้สำหรับฉัน:

location.href='/otherSection'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.