JQuery या सादे जावास्क्रिप्ट का उपयोग करके URL पैरामीटर कैसे प्राप्त करें?


617

मैंने बहुत सारे jQuery के उदाहरण देखे हैं जहाँ पैरामीटर आकार और नाम अज्ञात हैं।

मेरा URL केवल 1 स्ट्रिंग वाला है:

http://example.com?sent=yes

मैं सिर्फ पता लगाना चाहता हूं:

  1. है sentमौजूद हैं?
  2. क्या यह "हाँ" के बराबर है?




सबसे अच्छा समाधान जो मैंने कभी यहां देखा है [1] [1]: stackoverflow.com/a/901144/3106590
hmfarimani

1
इसके लिए अब एक प्लगइन / पुस्तकालय है, जिसे URI.js कहा जाता है: github.com/medialize/URI.js
alexw

जवाबों:


1211

सबसे अच्छा समाधान यहाँ

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

और यह, कैसे आप इस समारोह संभालने यूआरएल है का उपयोग कर सकते है
http://dummy.com/?technology=jquery&blog=jquerybyexample

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');

8
धन्यवाद! लेकिन इसे कॉपी करते समय, मुझे एक बुरा आश्चर्य मिला, जिसमें एक शून्य-चौड़ाई वाला व्हाट्सएप (\ u200b) शामिल था। स्क्रिप्ट बनाना एक अदृश्य वाक्यविन्यास त्रुटि है।
क्रिस्टोफर ओहेलसन

11
एक falseया nullखाली खोज के लिए वापस लौटें
स्टेफानो कैराना

4
यह समाधान मेरे लिए बहुत अच्छा काम करता है मैंने अभी तक var sPageURL = decodeURI (window.location.search.substring (1)) का उपयोग किया है; % 20 वर्णों को श्वेत स्थानों में परिवर्तित करने के लिए और अगर पैरामीटर से मिलान नहीं किया जाता है, तो मैं कुछ नहीं के बजाय एक खाली स्ट्रिंग लौटाता हूं।
क्रिस्टोफ़

18
मैंने इस टिप्पणी के ऊपर सभी टिप्पणी कोड परिवर्तनों को शामिल करने के लिए उत्तर अपडेट कर दिया है।
रोब इवांस

7
डिकोडिंग को पैरामीटर मान पर किया जाना चाहिए (जैसा कि Iouri सुझाव देता है)। यदि डिकोडिंग url पर किया जाता है (जैसे कि उत्तर में), तो एन्कोडेड &या =पैरामीटर मान में यह सही ढंग से काम नहीं करेगा ।
ज़ाकिंस्टर

286

2020 से समाधान

हमारे पास: http://example.com?sent=yes है

let searchParams = new URLSearchParams(window.location.search)

क्या भेजा अस्तित्व ?

searchParams.has('sent') // true

क्या यह "हाँ" के बराबर है?

let param = searchParams.get('sent')

और फिर बस तुलना करें।


16
मुझे लगता है कि यह ब्राउज़रों में समर्थित नहीं है, इसलिए किसी को इसका उपयोग क्यों करना चाहिए? संदर्भ - डेवलपर.
mozilla.org/en-US/docs/Web/API/URLSearchParams

1
@p_champ आप सही हैं। लेकिन आप URLSearchParams
Optio

2
वर्तमान में IE / Edge में काम नहीं कर रहा है, इसलिए फ़ीचर डिटेक्शन करें: if ('URLSearchParams' in window) { // Browser supports URLSearchParams} यहाँ देखें
mfgmicha

4
मेरे और मेरे इच्छित दर्शकों के लिए काफी अच्छा है। caniuse.com/#feat=urlsearchparams
jontsai

4
@p_champ Edge को v17 (अप्रैल 2018) में समर्थन मिला। आईई को मरने दो।
रायन ड्यूवाल

198

jQuery कोड स्निपेट डायनामिक वैरिएबल को url में मापदंडों के रूप में संग्रहीत करने के लिए और उन्हें जावास्क्रिप्ट स्टोरेज के रूप में संग्रहित करने के लिए तैयार है, जो आपके डेटा के उपयोग के लिए तैयार हैं।

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results==null) {
       return null;
    }
    return decodeURI(results[1]) || 0;
}

example.com?param1=name¶m2=&id=6

$.urlParam('param1'); // name
$.urlParam('id');        // 6
$.urlParam('param2');   // null

उदाहरण रिक्त स्थान के साथ params

http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));  
//output: Gold%20Coast



console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast

12
ध्यान दें: आपको इस मामले में डीकोड करने की आवश्यकता है कि पैरामीटर या उमलैट आदि के रूप में विशेष वर्ण हैं, इसलिए इसके बजाय return results[1] || 0;होना चाहिएreturn decodeURI(results[1]) || 0;
काई नैक

बस जिज्ञासु, इसे परिणाम की आवश्यकता क्यों है || 0क्योंकि परिणाम के लिए पहले से ही एक जांच है, क्या यह हमेशा मैच सरणी वापस नहीं करेगा?
AirWick219

@ AirWick219 एक उपयुक्त विफल रहता है। हालांकि निरर्थक, कभी भी सतर्क होने के लिए दर्द नहीं करता
zanderwar

2
यहाँ, सबसे अधिक संभावना है, मूल स्रोत: sitepoint.com/url-parameters-jquery लेकिन इस उत्तर में कुछ नए विचार जोड़े गए हैं
bgmCoder

1
यकीन नहीं है कि यह इसके लिए jQuery का उपयोग करने लायक है।
क्वेंटिन 2

88

मैं इसे हमेशा एक पंक्ति के रूप में रखता हूं। अब परम के पास वर्स है:

params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})

बहु लाइन:

var params={};
window.location.search
  .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
    params[key] = value;
  }
);

एक समारोह के रूप में

function getSearchParams(k){
 var p={};
 location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
 return k?p[k]:p;
}

जो आप के रूप में उपयोग कर सकते हैं:

getSearchParams()  //returns {key1:val1, key2:val2}

या

getSearchParams("key1")  //returns val1

बदसूरत हैक कि खोज स्ट्रिंग को संशोधित करता है ... लेकिन कोई बाहरी मॉड्यूल या jquery की आवश्यकता नहीं है। मुझें यह पसंद है।
ब्राइस

4
@Bryce यह वास्तव में खोज स्ट्रिंग को संशोधित नहीं करता है। .replace वास्तव में एक नया स्ट्रिंग लौटाता है और जो लौटे हुए तार हैं उन्हें परम ऑब्जेक्ट में संसाधित किया जाता है।
जागृत करना

अच्छा, छोटा और, स्वीकृत समाधान के विपरीत, हर बार जब आपको मूल्य की आवश्यकता होती है, तो url को वापस करने की आवश्यकता नहीं होती है। replace(/[?&;]+([^=]+)=([^&;]*)/gi"समेटने" के साथ थोड़ा सुधार किया जा सकता है ; एक विभाजक के रूप में भी चरित्र।
ली डायर

स्पष्ट और दर्द रहित वन-लाइनर, मेरे लिए स्वीकृत उत्तर से बेहतर, कोई अतिरिक्त देयता नहीं।
सैम

यदि कोई GET-क्वेरी सीमांकक (प्रश्नचिह्न) के बजाय हैश का उपयोग करता है तो यह उपयोग करेगा: var params={};window.location.hash.replace(/[#&]+([^=&]+)=([^&]*)/gi,function(str,key,value){params[key] = value;}); यह AJAX जैसी चीजों के लिए उपयोगी है जहां विंडो में हैश को अजाक्स-अनुरोधों के साथ अपडेट किया जाता है, लेकिन एक उपयोगकर्ता को एक uri पर जाने के लिए भी हैश वाला।
टॉमी

48

फिर भी एक और वैकल्पिक कार्य ...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}

नाम के लिए एक स्ट्रिंग होना चाहिए। एक आकर्षण ~ की तरह काम किया
mintedsky

2
यह मेरा मनपसंद है। ध्यान दें कि यह एक "खोज के साथ" समाप्त होता है। उदाहरण के लिए, यदि आप नाम के लिए "फोन" में पास करते हैं, और "होमफोन" नामक एक क्षेत्र भी है, तो यह गलत मान का मूल्य लौटा सकता है यदि यह यूआरएल में पहली बार आता है।
एफईडर्ड ’

2
ये गलत है! उदाहरण के लिए param('t') == param('sent') == 'yes'ओपी उदाहरण में। यहाँ एक तय है return (location.search.split(new RegExp('[?&]' + name + '='))[1] || '').split('&')[0]:; यह भी ध्यान दें कि आप यह नहीं बता सकते हैं कि क्या परम मौजूद है क्योंकि आपको लापता मापदंडों के लिए खाली स्ट्रिंग मिलती है।
ओरीदम

बहुत ही सरल और सुरुचिपूर्ण। सपने की तरह काम करता है। धन्यवाद।
अंजना सिल्वा

// (केवल कुंजी के अंतिम भाग के बजाय पूर्ण कुंजी को अस्तित्व में लाने के लिए मजबूर करने के लिए)return (location.search.split('?' + name + '=')[1] || location.search.split('&' + name + '=')[1] || '').split('&')[0];
हारून

45

बहुत देर हो सकती है। लेकिन यह विधि बहुत आसान और सरल है

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>

<!-- URL:  www.example.com/correct/?message=done&year=1990 -->

<script type="text/javascript">
$(function(){
    $.url.attr('protocol')  // --> Protocol: "http"
    $.url.attr('path')      // --> host: "www.example.com"
    $.url.attr('query')         // --> path: "/correct/"
    $.url.attr('message')       // --> query: "done"
    $.url.attr('year')      // --> query: "1990"
});

UPDATE
को url प्लगइन की आवश्यकता है: plugins.jquery.com/url
धन्यवाद -Ripounet


2
जो कोई भी इस पर निर्णय लेता है, उसे पहले रेपो की जांच करनी चाहिए। उपयोग बदल गया है। $ .url.attr ('संदेश') $ .url ("क्वेरी") बन जाता है और यह केवल पूर्ण क्वेरी देता है! केवल एक पैरामीटर प्राप्त करने के लिए मेरे पास था: $ .url ("क्वेरी")। स्प्लिट ("=") [1] [१] यूआरएल लिंक लिंक
pseudozach

34

या आप इस छोटे से फ़ंक्शन का उपयोग कर सकते हैं, क्योंकि ओवरक्लम्पलेटेड समाधान क्यों?

function getQueryParam(param, defaultValue = undefined) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
            return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
        })
    return defaultValue
}

जो सरल और बेहतर होने पर बेहतर लगता है:

tl; डॉ एक लाइन समाधान

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
परिणाम:
क्वेरी ['भेजा'] // अपरिभाषित या 'मूल्य'

लेकिन क्या होगा अगर आपको एन्कोडेड अक्षर या बहुविकल्पीय कुंजी मिल गई है ?

आप इस उत्तर को बेहतर तरीके से देख सकते हैं : मैं जावास्क्रिप्ट में क्वेरी स्ट्रिंग मान कैसे प्राप्त कर सकता हूं?

झलक

"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"

3
स्ट्रिंग स्प्लिट रेगेक्स से भी तेज होने की संभावना है। ऐसा नहीं है कि एक कारक पर विचार कर रहा है url केवल एक बार पार्स किया जाएगा।
पैट्रिक

यह समाधान (पहले वाला) है जो ब्राउज़रों में मेरे लिए पूरी तरह से काम करता है - धन्यवाद!
निकीवेंच

1
@NickyTheWrench सुनकर बहुत अच्छा लगा, धन्यवाद! वैसे भी, ध्यान रखें कि यह एक बहुत ही सरल उपाय है, यदि आपको जटिल url params मिलते हैं जिनमें विशेष वर्ण होते हैं, तो आप दिए गए लिंक को बेहतर तरीके से जांचते हैं।
क्वर्टी

@ क्वर्टी युप - मेरा उपयोग का मामला बहुत सरल है जहाँ पैरामीटर हमेशा समान होता है, आदि (मूल रूप से वास्तव में ओपी ने जो पूछा वह फिर से धन्यवाद!
NickTheWrench

1
@BernardVanderBeken दिलचस्प है, मैंने इसे ठीक कर दिया, वैसे भी, यह बहुत गूंगा समाधान है, तल पर जो एन्कोडेड वर्णों और सरणियों का समर्थन करता है वह बहुत बेहतर है।
क्वर्टी

33

का उपयोग कर URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

संगतता के बारे में सावधान रहें (ज्यादातर यह ठीक है, लेकिन IE और एज, अलग कहानी हो सकती है, संगत संदर्भ के लिए इसे जांचें: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams )


अधिकांश ब्राउज़र इसका उपयोग नहीं कर सकते हैं।
saf21

URLSearchParams विशेष वर्ण "+" को एक स्थान से प्रतिस्थापित करता है। इसलिए यदि आपके url param में "+" है, तो इसे बदल दिया जाएगा।
ग्रेटर

11

यह सरल है और मेरे लिए काम करता है

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

इसलिए यदि आपका url http://www.yoursite.com?city=4 है

इसे इस्तेमाल करे

console.log($.urlParam('city'));

10

शायद आप दंत चिकित्सक जेएस को एक नज़र देना चाहते हैं? (अस्वीकरण: मैंने कोड लिखा है)

कोड:

document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"

डेंटिस्ट जेएस के साथ, आप मूल रूप से सभी स्ट्रिंग्स (जैसे, document.URL.extract ()) पर एक्सट्रेक्ट () फ़ंक्शन को कॉल कर सकते हैं और आपको मिले सभी मापदंडों का एक HashMap वापस मिलता है। यह भी सीमांकक और सभी से निपटने के लिए अनुकूलन योग्य है।

न्यूनतम संस्करण <1kb


5

मुझे उम्मीद है कि इससे सहायता मिलेगी।

 <script type="text/javascript">
   function getParameters() {
     var searchString = window.location.search.substring(1),
       params = searchString.split("&"),
       hash = {};

     if (searchString == "") return {};
     for (var i = 0; i < params.length; i++) {
       var val = params[i].split("=");
       hash[unescape(val[0])] = unescape(val[1]);
     }

     return hash;
   }

    $(window).load(function() {
      var param = getParameters();
      if (typeof param.sent !== "undefined") {
        // Do something.
      }
    });
</script>

5

function GetRequestParam(param)
{
	var res = null;
	try{
		var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
		var ar = qs.split('&');
		$.each(ar, function(a, b){
			var kv = b.split('=');
			if(param === kv[0]){
				res = kv[1];
				return false;//break loop
			}
		});
	}catch(e){}
	return res;
}


4

इस कार्यशील डेमो की कोशिश करें http://jsfiddle.net/xy7cX/

एपीआई:

यह मदद करनी चाहिए :)

कोड

var url = "http://myurl.com?sent=yes"

var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));

3
केवल एक ही संस्करण के लिए काम करता है - & इसे बंद कर देगा - रेगेक्स के साथ बढ़ाया जा सकता है
एल्विन

3

यह महान पुस्तकालय है: https://github.com/allmarkedup/purl

जो आपको बस करने की अनुमति देता है

url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
   if (sent == 'yes') { // sent is equal to yes
     // ...
   }
}

उदाहरण मान रहा है कि आप jQuery का उपयोग कर रहे हैं। आप इसे सादे जावास्क्रिप्ट के रूप में भी उपयोग कर सकते हैं, वाक्यविन्यास फिर थोड़ा अलग होगा।


1
यह पुस्तकालय किसी भी अधिक बनाए नहीं रखा गया है, हालांकि मैं इसका उपयोग करता हूं और यह बहुत अच्छा है। सुनिश्चित करें कि आप उन क्वेरी स्ट्रिंग पैरामीटर्स को प्राप्त करने के लिए परम एट्री का उपयोग नहीं करते हैं, जैसा कि लेखक ने उनके उदाहरण में शामिल किया है।
एक्शन डैन

3

यह ओवरकिल हो सकता है, लेकिन URI.js नामक पार्सिंग URI के लिए अब एक बहुत ही लोकप्रिय पुस्तकालय उपलब्ध है ।

उदाहरण

var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow";
var components = URI.parse(uri);
var query = URI.parseQuery(components['query']);
document.getElementById("result").innerHTML = "URI = " + uri;
document.getElementById("result").innerHTML += "<br>technology = " + query['technology'];

// If you look in your console, you will see that this library generates a JS array for multi-valued queries!
console.log(query['technology']);
console.log(query['blog']);
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.17.0/URI.min.js"></script>

<span id="result"></span>


3

इतना सरल आप किसी भी यूआरएल का उपयोग कर सकते हैं और मूल्य प्राप्त कर सकते हैं

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

उपयोग उदाहरण

// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2" 

नोट: यदि कोई पैरामीटर कई बार मौजूद होता है (? पहला = मान 1 और दूसरा = मान 2), तो आपको पहला मान (मान 1) और दूसरा मान (मान 2) के रूप में मिलेगा।


2

यह आपको काम करने के लिए एक अच्छी वस्तु देगा

    function queryParameters () {
        var result = {};

        var params = window.location.search.split(/\?|\&/);

        params.forEach( function(it) {
            if (it) {
                var param = it.split("=");
                result[param[0]] = param[1];
            }
        });

        return result;
    }

और तब;

    if (queryParameters().sent === 'yes') { .....

स्प्लिट (/ \? | \ & /) इसका मतलब है
सेल्वा गणपति

2

यह गज़ोरिस के उत्तर पर आधारित है , लेकिन URL पैरामीटर को डीकोड करता है, इसलिए जब उनका उपयोग संख्याओं और अक्षरों के अलावा अन्य डेटा में होता है, तो उनका उपयोग किया जा सकता है:

function urlParam(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    // Need to decode the URL parameters, including putting in a fix for the plus sign
    // https://stackoverflow.com/a/24417399
    return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}

2

URI.js लाइब्रेरी का उपयोग करने के साथ एक और उदाहरण है ।

उदाहरण प्रश्नों के ठीक उसी प्रकार से उत्तर देता है जैसा पूछा जाता है।

var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Does sent exist?
var sendExists = urlParams.sent !== undefined;
// 2. Is it equal to "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';

// output results in readable form
// not required for production
if (sendExists) {
  console.log('Url has "sent" param, its value is "' + urlParams.sent + '"');
  if (urlParams.sent == 'yes') {
    console.log('"Sent" param is equal to "yes"');
  } else {
    console.log('"Sent" param is not equal to "yes"');
  }
} else {
  console.log('Url hasn\'t "sent" param');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>


2
http://example.com?sent=yes

सबसे अच्छा समाधान यहाँ

function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.href);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, '    '));
};

उपरोक्त फ़ंक्शन के साथ, आप अलग-अलग पैरामीटर मान प्राप्त कर सकते हैं:

getUrlParameter('sent');

बिल्कुल सही जवाब!
श्रीजनी घोष

1

समीर के उत्तर का कॉफ़ीस्क्रिप्ट संस्करण

getUrlParameter = (sParam) ->
  sPageURL = window.location.search.substring(1)
  sURLVariables = sPageURL.split('&')
  i = 0
  while i < sURLVariables.length
    sParameterName = sURLVariables[i].split('=')
    if sParameterName[0] == sParam
      return sParameterName[1]
    i++

1

समीर के जवाब में थोड़ा सुधार, हर बार कॉल करने के दौरान सभी मापदंडों के माध्यम से पार्सिंग और लूपिंग से बचने के लिए कैश को बंद कर देता है

var getURLParam = (function() {
    var paramStr = decodeURIComponent(window.location.search).substring(1);
    var paramSegs = paramStr.split('&');
    var params = [];
    for(var i = 0; i < paramSegs.length; i++) {
        var paramSeg = paramSegs[i].split('=');
        params[paramSeg[0]] = paramSeg[1];
    }
    console.log(params);
    return function(key) {
        return params[key];
    }
})();


1

वेनिला जावास्क्रिप्ट के साथ, आप आसानी से परमेस (लोकेशन) खोज सकते हैं, सबस्ट्रिंग प्राप्त कर सकते हैं (बिना)? और इसे 'और' द्वारा विभाजित करके एक सरणी में बदल दें।

जैसा कि आप urlParams के माध्यम से पुनरावृत्ति करते हैं, तो आप फिर से स्ट्रिंग को '=' के साथ विभाजित कर सकते हैं और इसे 'params' ऑब्जेक्ट में ऑब्जेक्ट के रूप में जोड़ सकते हैं [उन्मूलन [0]] = तत्व [1]। सुपर सरल और उपयोग करने में आसान।

http://www.website.com/?error=userError&type=handwritten

            var urlParams = location.search.substring(1).split('&'),
                params = {};

            urlParams.forEach(function(el){
                var tmpArr = el.split('=');
                params[tmpArr[0]] = tmpArr[1];
            });


            var error = params['error'];
            var type = params['type'];

1

क्या होगा अगर URL पैरामीटर में फ़ाइल नाम = "p & g.html" & uid = 66 है

इस मामले में 1 फ़ंक्शन ठीक से काम नहीं करेगा। इसलिए मैंने कोड को संशोधित किया

function getUrlParameter(sParam) {
    var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
}

1

निश्चित रूप से मैं अपने उत्तर को एक अति-उत्तर वाले प्रश्न के साथ जोड़ रहा हूं, लेकिन इसके फायदे हैं:

- jQuery सहित किसी भी बाहरी पुस्तकालयों पर निर्भर नहीं है

- 'स्ट्रिंग' का विस्तार करके, ग्लोबल फंक्शन नेमस्पेस को प्रदूषित नहीं किया है।

- कोई वैश्विक डेटा नहीं बनाना और मैच के बाद अनावश्यक प्रसंस्करण करना

- एन्कोडिंग मुद्दों को संभालना, और गैर-एन्कोडेड पैरामीटर नाम को स्वीकार करना (ग्रहण करना)

- स्पष्ट forछोरों से बचना

String.prototype.urlParamValue = function() {
    var desiredVal = null;
    var paramName = this.valueOf();
    window.location.search.substring(1).split('&').some(function(currentValue, _, _) {
        var nameVal = currentValue.split('=');
        if ( decodeURIComponent(nameVal[0]) === paramName ) {
            desiredVal = decodeURIComponent(nameVal[1]);
            return true;
        }
        return false;
    });
    return desiredVal;
};

तो आप इसे इस प्रकार उपयोग करेंगे:

var paramVal = "paramName".urlParamValue() // null if no match

1

यदि आप एक विशिष्ट यूआरएल से एक विशिष्ट पैरामीटर खोजना चाहते हैं:

function findParam(url, param){
  var check = "" + param;
  if(url.search(check )>=0){
      return url.substring(url.search(check )).split('&')[0].split('=')[1];
  }
}  

var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254";  
alert(findParam(url,"order_no"));

0

एक और समाधान जो jQuery और JSON का उपयोग करता है, ताकि आप किसी ऑब्जेक्ट के माध्यम से पैरामीटर मानों तक पहुंच सकें।

var loc = window.location.href;
var param = {};
if(loc.indexOf('?') > -1)
{
    var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&");

    var stringJson = "{";
    for(var i=0;i<params.length;i++)
    {
        var propVal = params[i].split("=");
        var paramName = propVal[0];
        var value = propVal[1];
        stringJson += "\""+paramName+"\": \""+value+"\"";
        if(i != params.length-1) stringJson += ",";
    }
    stringJson += "}";
    // parse string with jQuery parseJSON
    param = $.parseJSON(stringJson);
}

मान लें कि आपका URL है http://example.com/?search=hello+world&language=en&page=3

उसके बाद यह केवल इस तरह के मापदंडों का उपयोग करने की बात है:

param.language

लौटने के लिये

en

इसका सबसे उपयोगी उपयोग इसे पृष्ठ लोड पर चलाना और मापदंडों का उपयोग करने के लिए वैश्विक चर का उपयोग करना है, कहीं भी आपको उनकी आवश्यकता हो सकती है।

यदि आपके पैरामीटर में संख्यात्मक मान हैं तो बस मान को पार्स करें।

parseInt(param.page)

अगर कोई पैरामीटर नहीं हैं paramतो बस एक खाली वस्तु होगी।



-1

इसे इस्तेमाल करो

$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.