কোয়েরি স্ট্রিং ছাড়াই URL পাওয়ার কী কোনও পদ্ধতি আছে?


267

আমার মতো ইউআরএল আছে http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235

আমি কোয়েরি স্ট্রিং ছাড়া URL টি পেতে চাই: http://localhost/dms/mduserSecurity/UIL/index.php

জাভাস্ক্রিপ্ট এ জন্য কোন পদ্ধতি আছে? বর্তমানে আমি ব্যবহার করছি document.location.hrefতবে এটি সম্পূর্ণ ইউআরএল দেয়।


উত্তর:


348

এটা চেষ্টা কর: window.location.href.split('?')[0]


12
@ লিংকন - কেন? আমি কোনও কারণ দেখছি না যে এটি অনিরাপদ হবে। এটি চশমাগুলির মধ্যেও রয়েছে (উইন্ডো.লোকেশন.রেফ কী কী ফিরিয়ে আনবে সেগুলির উভয় চশমা এবং ইউআরএল কীভাবে কাজ করবে তার জন্য চশমা) যাতে এতে ভবিষ্যতের কোনও সমস্যা না হয়। এটি ক্লিনার কোডের জন্য আরও সহজেই পড়া এবং বোঝা যায়। এটি ছোট কোডের জন্য ছোট। এবং শেষ অবধি এটি ফেলিক্সের উত্তরের চেয়ে কম তীব্র এবং কম জটিল। ফেলিক্সকে ভুল বলছেন না, তবে আমি বলছি যে ব্যর্থতা / নিরাপত্তাহীনতার কোনও নির্দিষ্ট উদাহরণ ছাড়াই এই উত্তরটি বেশিরভাগ ক্ষেত্রেই সর্বোত্তম।
জিম্বো জনি


22
@JimboJonny @Marcel এই টুকরা শনাক্তকারী (যেমন হ্যান্ডেল নেই #শব্দটি stackoverflow.com/questions/5817505#5817548 )। আপনাকে রেইজেক্স ব্যবহার করতে হবে বা একাধিক .স্প্লিট () ফাংশন ব্যবহার করতে হবে, আপনি কোন URL সাফ করার সময় এই "সাধারণ" উত্তর হওয়ার মানটি হারিয়েছেন। অনুমোদিত যে এটি প্রযুক্তিগতভাবে প্রশ্নের ক্ষেত্রের বাইরে, তবে আমি বলব এটি এখনও প্রাসঙ্গিক।
অ্যান্ড্রুব

2
যদিও এটি সঠিক যে এটি খণ্ড সনাক্তকারীকে পরিচালনা করে না, প্রশ্নকারী সম্পূর্ণরূপে স্যানিটাইজড ইউআরএল চাইবে না। তিনি বিশেষত কোনও জিজ্ঞাসার স্ট্রিংবিহীন url চেয়েছিলেন এবং এই উত্তরটি ঠিক তা সরবরাহ করে। একই URL টি, ক্যোয়ারী স্ট্রিংটি সরানো হয়েছে।
ড্রয় মেজর

383

সম্পর্কে Window.locationএবং Locationইন্টারফেস পড়ুন :

var url = [location.protocol, '//', location.host, location.pathname].join('');

27
অথবা যদি এস 6 ব্যবহার করে আপনি একটি স্ট্রিং আক্ষরিক ব্যবহার করতে পারেন ${location.protocol}//${location.host}${location.pathname}
আলেক্সেরার্ডন

যদিও মনে রাখবেন যে pathnameপারে নেতৃস্থানীয় ড্রপ /(আইই 11 পর্যন্ত?) । আহ, আইই, সবসময় তুষারপাত, তাই না?
রাফিন

36
location.toString().replace(location.search, "")

11
এটি একটি খুব মূল্যহীন উত্তর। এটিই কেবল একমাত্র প্রশ্নের উত্তর দেয়। এমনকি সংক্ষিপ্ত বিকল্প:location.href.replace(location.search, '')
গাইডো বোম্যান

2
খণ্ড খণ্ডের কী আছে যেমন ডোমেইন.com
x=

2
এই প্রশ্নের 10 টি উত্তর আছে। তাদের মধ্যে কেবল একটি হ্যাশ সংরক্ষণ করে ( যা URL যেভাবেই জিজ্ঞাসা করছে জিজ্ঞাসা করছে তাতে উপস্থিত নেই )। কেন দুটি মন্তব্য দেখানো হচ্ছে যে এই উত্তরটি অস্তিত্বহীন হ্যাশ সংরক্ষণ করে না তবে অন্যদের কোনওটিকেই সংরক্ষণ করে না?
কোয়ান্টিন

13
var url = window.location.origin + window.location.pathname;

5
ডাউন-ভোট হয়েছে কারণ আইইন 11 :-(
জর্জ

6
কোনও নির্দিষ্ট ব্রাউজারে কাজ না করার কারণে আপনি কেন কিছুটা ভোট দিতে চান? অ্যাপ্লিকেশনগুলির কারণে তারা প্রচুর জায়গাগুলি এখনও IE10 ব্যবহার করে।
ব্র্যাড

1
আইই 11.309.16299.0 এ কাজ করে
রায়ান বার্বিজ

10

আপনি যদি হ্যাশও সরাতে চান তবে এটি ব্যবহার করে দেখুন: window.location.href.split(/[?#]/)[0]


5

চেষ্টা করুন:

document.location.protocol + '//' +
document.location.host +
document.location.pathname;

(এনবি: এর .hostপরিবর্তে বন্দরটিও .hostnameঅন্তর্ভুক্ত হয়ে যায়, যদি প্রয়োজন হয়)



4

কেবল বিভাজন (সহজ উপায়) ব্যবহার করে স্ট্রিংটি কেটে দিন:

var myString = "http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu=true&pcode=1235"
var mySplitResult = myString.split("?");
alert(mySplitResult[0]);

3

কোয়েরি ব্যতীত ইউআরএলটির প্রতিটি অংশ পেতে:

var url = (location.origin).concat(location.pathname).concat(location.hash);

মনে রাখবেন যে এর মধ্যে হ্যাশও রয়েছে, যদি থাকে তবে (আমি জানি আপনার উদাহরণের ইউআরএলটিতে কোনও হ্যাশ নেই, তবে আমি সেই দিকটি সম্পূর্ণতার জন্য অন্তর্ভুক্ত করেছি)। হ্যাশ দূর করতে, কেবল বাদ দিন .concat(location.hash)

concatজাভাস্ক্রিপ্টের স্ট্রিংগুলিতে একসাথে (বরং এর পরিবর্তে +) যোগ দেওয়ার জন্য এটি ব্যবহার করা ভাল অনুশীলন : কিছু পরিস্থিতিতে এটি টাইপ বিভ্রান্তির মতো সমস্যাগুলি এড়ায়।


1

এর বৈশিষ্ট্যগুলি ব্যবহার করুন window.location

var loc = window.location;
var withoutQuery = loc.hostname + loc.pathname;
var includingProtocol = loc.protocol + "//" + loc.hostname + loc.pathname;

আপনি আরও সম্পত্তি https://developer.mozilla.org/en/DOM/window.location এ দেখতে পারেন


1

এখানে দুটি পদ্ধতি রয়েছে:

<script type="text/javascript">
    var s="http://localhost/dms/mduserSecurity/UIL/index.php?menu=true&submenu
                                =true&pcode=1235";

    var st=s.substring(0, s.indexOf("?"));

    alert(st);

    alert(s.replace(/\?.*/,''));
</script>


0

এই দুটি লাইনটি কেবল $ (নথি) এ যুক্ত করুন J JS এ প্রস্তুত হিসাবে নিম্নলিখিত:

$(document).ready(function () {
 $("div.sidebar nav a").removeClass("active");
        $('nav a[href$="'+ window.location.pathname.split("?")[0] +'"]').addClass('active');
});

ডলারের চিহ্ন ($) ব্যবহার করা ভাল (সমাপ্তি)

$('nav a[href$

(^) এর পরিবর্তে (দিয়ে শুরু করুন)

$('nav a[href^

কারণ, যদি আপনি (^) চিহ্নটি ব্যবহার করেন এবং নেভিগেশন মেনুতে আপনার নেস্টেড URL রয়েছে, (যেমন "/ অ্যাকাউন্ট" এবং "/ অ্যাকাউন্ট / ভূমিকা")

এটি উভয়কেই সক্রিয় করবে।


0

আপনি যদি ডট নেট কোর 3.1 ব্যবহার করেন তবে এটি রুটটিকে উপেক্ষা করার পক্ষে সমর্থন করে , সুতরাং রুটটি যদি ছোট অক্ষরে থাকে এবং ব্যবহারকারী বড় আকারের অক্ষরে রাউটটি লেখেন।

সুতরাং, নিম্নলিখিত কোডটি খুব সহায়ক:

$(document).ready(function () {
    $("div.sidebar nav a").removeClass("active");
    var urlPath = window.location.pathname.split("?")[0];
    var nav = $('div.sidebar nav a').filter(function () {
        return $(this).attr('href').toLowerCase().indexOf(urlPath.toLocaleLowerCase()) > -1;
    });
    $(nav).each(function () {
        if ($(this).attr("href").toLowerCase() == urlPath.toLocaleLowerCase())
            $(this).addClass('active');
    });
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.