यूआरएल पैरामीटर jquery या जेएस में क्वेरी स्ट्रिंग मान कैसे प्राप्त करें




url parameters (20)

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

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) और दूसरा मान (value2) के रूप में प्राप्त होगा।

मैंने कई jQuery उदाहरण देखे हैं जहां पैरामीटर आकार और नाम अज्ञात हैं। मेरा यूआरएल केवल 1 स्ट्रिंग होने वाला है:

http://example.com?sent=yes

मैं बस पता लगाना चाहता हूं:

  1. sent है?
  2. क्या यह "हां" के बराबर है?

इस कामकाजी डेमो को आजमाएं http://jsfiddle.net/xy7cX/

एपीआई:

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

कोड

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

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

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

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

अपना यूआरएल http://example.com/?search=hello+world&language=en&page=3

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

param.language

लौटने के लिये

en

इसका सबसे उपयोगी उपयोग पेज लोड पर इसे चलाने और वैश्विक चर के उपयोग को पैरामीटर का उपयोग करने के लिए कहीं भी आपको चाहिए।

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

parseInt(param.page)

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


फिर भी एक और वैकल्पिक समारोह ...

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

बस मेरे कोड दिखाना चाहता था:

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

}


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

- 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

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

 <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>

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

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

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

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"));

यह अधिक हो सकता है, लेकिन github.com/medialize/URI.js नामक यूआरआई को पार्स करने के लिए अब एक बहुत लोकप्रिय लाइब्रेरी उपलब्ध है।

उदाहरण

var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=";
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>


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

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

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

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

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

या आप इस साफ छोटे से काम का उपयोग कर सकते हैं, क्योंकि अत्यधिक समाधान क्यों?

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

जो सरल और ऑनलाइन होने पर भी बेहतर दिखता है:

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

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
result:
queryDict['sent'] // undefined or 'value'

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

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

झलक

"?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"

यूआरएल में पैरामीटर के रूप में संग्रहीत गतिशील चर प्राप्त करने के लिए jQuery कोड स्निपेट और उन्हें अपनी स्क्रिप्ट के साथ उपयोग के लिए तैयार जावास्क्रिप्ट चर के रूप में स्टोर करें:

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

example.com?param1=name&param2=&id=6

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

रिक्त स्थान के साथ उदाहरण पैराम

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



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

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

कोड:

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 ()) पर निकालने () फ़ंक्शन को कॉल कर सकते हैं और आप पाए गए सभी पैरामीटर का हैश मैप वापस ले सकते हैं। यह delimiters और सभी के साथ सौदा करने के लिए भी अनुकूलन है।

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


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

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++

here सबसे अच्छा समाधान।

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(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 : sParameterName[1];
        }
    }
};

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

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

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>


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;
}


var RequestQuerystring;
(window.onpopstate = function () {
    var match,
        pl = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query = window.location.search.substring(1);

    RequestQuerystring = {};
    while (match = search.exec(query))
        RequestQuerystring[decode(match[1])] = decode(match[2]);
})();

RequestQuerystring अब आपके सभी पैरामीटर के साथ एक ऑब्जेक्ट है







querystringparameter