जावास्क्रिप्ट के माध्यम से एक क्वेरी स्ट्रिंग मान मौजूद है, तो कैसे जांचें?


97

अगर q=जावास्क्रिप्ट या jQuery का उपयोग करके क्वेरी स्ट्रिंग में यह है तो मैं कैसे जांच सकता हूं ?


इस मदद की भी हो सकती है: stackoverflow.com/a/12151322 - बारे में जानकारी शामिल URLSearchParams : जैसे, var url = new URLSearchParams(location.search); url.has("my_great_query");रिटर्न trueयदि क्वेरी स्ट्रिंग अपने यूआरएल में है। इसके बाद आप इसका मूल्य प्राप्त कर सकते हैं url.get("my_great_query");
13106 पर user1063287

जवाबों:


109
var field = 'q';
var url = window.location.href;
if(url.indexOf('?' + field + '=') != -1)
    return true;
else if(url.indexOf('&' + field + '=') != -1)
    return true;
return false

7
एकाधिक वापसी पथ एक व्यक्तिगत पसंद है, मैं उनका उपयोग करता हूं क्योंकि मुझे लगता है कि वे क्लीनर कोड का नेतृत्व करते हैं, क्योंकि वे मुझे बयानों से बचने में मदद करते हैं यदि कथन और बिल्कुल वही दिखाते हैं जो कोड में एक निश्चित बिंदु पर चल रहा है। जैसा कि कड़े मामलों के लिए होता है, बाएं हाथ और दाहिने हाथ दोनों तरफ हमेशा संख्याएँ होंगी, इसलिए सख्त समानता ऑपरेटरों के लिए क्या अंतर होगा?
लोरेनव्स

4
क्लीनर कोड? ... क्यों न केवल इंडेक्सऑफ टेस्ट लौटाएं, बल्कि इसे पूरी तरह से बेकार प्रारंभिक आईएफ स्टेटमेंट में रखा जाए।
जेम्स

4
मैं जेपी से सहमत हूं। आपने सही समाधान लिखा होगा, लेकिन आपका कोड वास्तव में मैला है। तुम कहाँ घुंघराले ब्रेसिज़ हो? आपको "द गुड पार्ट्स" पढ़ना चाहिए जहां कोड को घुंघराले ब्रेसिज़ के बिना एक शैली लिखा गया है जो कुछ शर्तों के तहत विफल साबित हुआ है और रखरखाव के दौरान भ्रम पैदा करता है।

2
url.indexOf (फ़ील्ड + '=')! = -1 पर्याप्त था जो मुझे लगता है। इससे कोई फर्क नहीं पड़ता कि यह शुरुआत में है या नहीं
yyy

2
@yyy नहीं यह नहीं था। यदि आपके पास एक क्वेरी स्ट्रिंग जैसा था ?kodiaq=1, तो url.indexOf('q=')इसके साथ प्रीफ़िक्स किए बिना कॉल करना &या ?आपको विश्वास दिलाएगा कि qपैरामीटर मौजूद है।
मिकालस्टैंको

115

आप एक नियमित अभिव्यक्ति का उपयोग भी कर सकते हैं:

/[?&]q=/.test(location.search)

1
वास्तव में यह अधिक पसंद करेगा: अगर (? नया RegExp ("[??] hfPageToken =")। परीक्षण (s.data)) // अगर hfPageToken डेटा पहले से ही अनुरोध में मौजूद नहीं है / s.data = s.data ? [s.data, tokenParam] .join ("&"): tokenParam; }
ड्रैगोस डर्लट

9
बस स्पष्ट करने के लिए, यह बहुत अच्छा काम करता है if(/[?&]q=/.test(location.search)) { alert("match"); }(मैं @DragosDurlut टिप्पणी के कारण थोड़ा उलझन में था। :)
Leia

1
नियमित भावों के बारे में योदा कहती है: "कम कोड वे हैं .. पढ़ने के लिए आसान वे नहीं हैं"।
रेलेवेलेस डेस

24

का उपयोग कर URL:

url = new URL(window.location.href);

if (url.searchParams.get('test')) {

}

संपादित करें: यदि आप संगतता के बारे में दुखी हैं, तो मैं अत्यधिक सुझाव दूंगा https://github.com/medialize/URI.js/


4
अच्छा है, लेकिन कोई IE समर्थन नहीं है।
UpTheCreek

1
@UpTheCric दुख की बात तो प्रकट होता है। मुझे इसे एक संगत संस्करण के लिए स्विच करना पड़ा। हम सपने देख सकते हैं।
डेमियन रोश

9

सादा जावास्क्रिप्ट कोड नमूना जो आपके प्रश्न का शाब्दिक उत्तर देता है:

return location.search.indexOf('q=')>=0;

सादे जावास्क्रिप्ट कोड नमूना जो खोजने की कोशिश करता है कि क्या q पैरामीटर मौजूद है और यदि उसका कोई मान है:

var queryString=location.search;
var params=queryString.substring(1).split('&');
for(var i=0; i<params.length; i++){
    var pair=params[i].split('=');
    if(decodeURIComponent(pair[0])=='q' && pair[1])
        return true;
}
return false;

7
पहला उदाहरण के लिए सच लौटेगाfooq=bar
मिकादू

4

एक और संस्करण, लेकिन लगभग Gumbos समाधान के रूप में ही:

var isDebug = function(){
    return window.location.href.search("[?&]debug=") != -1;
};

3

यह फ़ंक्शन आपको JS में URL से पैरामीटर प्राप्त करने में मदद करता है

function getQuery(q) {
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1];
}


2

आधुनिक ब्राउज़रों में, यह बहुत आसान हो गया है, इसके लिए धन्यवाद URLSearchParams इंटरफ़ेस के है। यह एक URL के क्वेरी स्ट्रिंग के साथ काम करने के लिए उपयोगिता विधियों के एक मेजबान को परिभाषित करता है।

यह मानते हुए कि हमारा URL है https://example.com/?product=shirt&color=blue&newuser&size=m, आप क्वेरी स्ट्रिंग का उपयोग करके हड़प सकते हैं window.location.search:

const queryString = window.location.search;
console.log(queryString);
// ?product=shirt&color=blue&newuser&size=m

तब आप क्वेरी स्ट्रिंग के मापदंडों का उपयोग करके पार्स कर सकते हैं URLSearchParams:

const urlParams = new URLSearchParams(queryString);

फिर आप परिणाम पर इसके किसी भी तरीके को कॉल कर सकते हैं।

उदाहरण के लिए, URLSearchParams.get()दिए गए खोज पैरामीटर से जुड़ा पहला मान लौटाएगा:

const product = urlParams.get('product')
console.log(product);
// shirt

const color = urlParams.get('color')
console.log(color);
// blue

const newUser = urlParams.get('newuser')
console.log(newUser);
// empty string

आप यह URLSearchParams.has()जाँचने के लिए उपयोग कर सकते हैं कि क्या एक निश्चित पैरामीटर मौजूद है:

console.log(urlParams.has('product'));
// true

console.log(urlParams.has('paymentmethod'));
// false

आगे पढ़ने के लिए कृपया यहाँ क्लिक करें



0

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

function getQueryParams(){
    try{
        url = window.location.href;
        query_str = url.substr(url.indexOf('?')+1, url.length-1);
        r_params = query_str.split('&');
        params = {}
        for( i in r_params){
            param = r_params[i].split('=');
            params[ param[0] ] = param[1];
        }
        return params;
    }
    catch(e){
       return {};
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.