2009-08-21 5 views
56

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

उत्तर

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

एकाधिक वापसी पथ एक व्यक्तिगत पसंद है, मैं उन्हें उपयोग करें, क्योंकि मैं वे क्लीनर कोड के लिए नेतृत्व लगता है, क्योंकि वे मेरी मदद बयान करता है, तो नेस्ट से बचने और वास्तव में दिखाने कोड में एक निश्चित बिंदु पर क्या चल रहा है। बदसूरत मामलों के लिए, बाएं हाथ और दाएं हाथ दोनों पक्ष हमेशा संख्याएं होंगी, तो सख्त समानता ऑपरेटरों को किस अंतर में बदलाव आएगा? – LorenVS

+4

क्लीनर कोड? ... पूरी तरह से बेकार प्रारंभिक IF कथन में रखने के बजाय, केवल इंडेक्स परीक्षण पर वापस न आएं। – James

+0

क्योंकि इंडेक्स को वापस करने के लिए परीक्षण के लिए मुझे उन्हें एक ही पंक्ति में रखना होगा, जो मेरे दिमाग में, पढ़ने के लिए कठिन होगा। विशेष रूप से इस कोड को प्रदर्शित करने के उद्देश्य के लिए प्रदर्शन किया गया था – LorenVS

0

मैं this library का उपयोग किया है जो पहले क्या आप के बाद कर रहे हैं की एक बहुत अच्छा काम करता है। विशेष रूप से: -

qs.contains(name) 
    Returns true if the querystring has a parameter name, else false. 

    if (qs2.contains("name1")){ alert(qs2.get("name1"));} 
89

तुम भी रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

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

मुझे यह सबसे आसान समाधान मिल गया है। –

+0

असल में यह अधिक पसंद करेगा: अगर (! नया RegExp ("[? &] HfPageToken =")। परीक्षण (एस।डेटा)) // यदि अनुरोध { s.data = s.data में hfPageToken डेटा पहले से मौजूद नहीं है? [s.data, टोकनपाराम]। जॉइन ("और"): टोकनपाराम; } –

+0

जीनियस, धन्यवाद। –

11

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

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

पहला उदाहरण' fooq = bar' के लिए सच होगा – mickadoo

5

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

var isDebug = function(){ 
    return window.location.href.search("[?&]debug=") != -1; 
}; 
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 {}; 
    } 
} 
3

इस समारोह में आपकी सहायता जे एस

में
function getQuery(q) { 
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; 
} 
1
URL से पैरामीटर प्राप्त करने के लिए

इस

//field "search"; 
var pattern = /[?&]search=/; 
var URL = location.search; 

if(pattern.test(URL)) 
{ 
    alert("Found :)"); 
}else{ 
    alert("Not found!"); 
} 
आज़माएं

JSFiddle: https://jsfiddle.net/codemirror/zj4qyao2/

3

URL का उपयोग करना:

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

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

} 
संबंधित मुद्दे