जावास्क्रिप्ट में "GET" अनुरोध पैरामीटर कैसे प्राप्त करें?


81

जावास्क्रिप्ट में अनुरोध से "GET" चर कैसे प्राप्त करें?

JQuery या YUI है! क्या यह सुविधा अंतर्निहित है?


जवाबों:


185

के तहत सभी डेटा उपलब्ध है

window.location.search

आपको स्ट्रिंग को पार्स करना होगा, जैसे।

function get(name){
   if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
      return decodeURIComponent(name[1]);
}

बस GET चर नाम के साथ फ़ंक्शन को पैरामीटर के रूप में कॉल करें, जैसे।

get('foo');

यदि चर का कोई मूल्य नहीं है या मौजूद नहीं है तो यह फ़ंक्शन चर मान या अपरिभाषित लौटाएगा


@ डैनियल सिलवीरा: हाँ, यह मूल्य को डिकोड / करना चाहिए (और नाम को एनकोड करना चाहिए)। कुछ ही पलों में मेरी पोस्ट को संपादित कर देंगे
— राफेल

2
ध्यान दें कि डिकोडायरेक्म्पोनेंट डीकोड नहीं करता है / सभी / संभव यूआरआई बच जाता है। विशेष रूप से "+" को "" के रूप में डिकोड नहीं किया जाएगा। (मैं भूल गया कि यह कौन सा ब्राउज़र था। एफएफ, हो सकता है?) कल्पना की आवश्यकता है कि वे केवल डिकोड करें कि वास्तव में क्या सांकेतिक शब्दों में बदलना है, और यह ""% 20 "के रूप में" "एन्कोड करेगा, इसलिए" + "अकेला रह गया है।
— जेसी रसाक

यही कारण है कि मैं PHP
— ymakux

2
@volocuga PHP के विपरीत, जावास्क्रिप्ट में URL से निपटना काफी दुर्लभ ऑपरेशन है, इसलिए ब्राउज़र विक्रेताओं ने वास्तव में इन सुविधाओं पर ध्यान केंद्रित नहीं किया है।
— राफेल

शानदार ढंग से उत्तर दिया राफेल;)
— जलाल सोरदो

36

आप का उपयोग कर सकते हैं jquery.urlमैं इस तरह किया था:

var xyz = jQuery.url.param("param_in_url");

स्रोत कोड की जाँच करें

अपडेटेड स्रोत: https://github.com/allmarkedup/jQuery-URL-Parser


1
शानदार जवाब, लेकिन आपका लिंक मर चुका है
— एडम केसी

@ तो ऐसा प्रतीत होता है। मुझे लगता है कि यह अपडेट किया गया URL है: github.com/allmarkedup/jQuery-URL-Parser मार्क पर्किन्स पर एक Google खोज jquery.url ने मुझे एक अद्यतन के लिए प्रेरित किया। मेरे पास स्रोत है जब मैंने इस उत्तर को पोस्ट किया है अगर आपको इसकी आवश्यकता है।
— काओ फ़िक्स

3
तो एक प्लगइन की आवश्यकता है?
— 21

var xyz = jQuery.url().param("param_in_url");सही सिंटैक्स jQuery.url()है जो वर्तमान पृष्ठ URL देता है। कृपया सुधार करें।
— अहमद अख्तर

13

यदि आप सभी अनुरोधों के साथ एक वस्तु चाहते हैं, तो बस मेरे दो सेंट लगाने के लिए

function getRequests() {
    var s1 = location.search.substring(1, location.search.length).split('&'),
        r = {}, s2, i;
    for (i = 0; i < s1.length; i += 1) {
        s2 = s1[i].split('=');
        r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]);
    }
    return r;
};

var QueryString = getRequests();

//if url === "index.html?test1=t1&test2=t2&test3=t3"
console.log(QueryString["test1"]); //logs t1
console.log(QueryString["test2"]); //logs t2
console.log(QueryString["test3"]); //logs t3

ध्यान दें, प्रत्येक परम के लिए कुंजी निचले मामले में सेट है। इसलिए, मैंने एक सहायक कार्य किया। इसलिए अब यह असंवेदनशील है।

function Request(name){
    return QueryString[name.toLowerCase()];
}

1
वास्तव में इस विधि की तरह। +1
— TR3B

12

नीचे दिए गए कोड की कोशिश करें, यह आपको यूआरएल से जीईटी पैरामीटर प्राप्त करने में मदद करेगा। अधिक जानकारी के लिए।

 var url_string = window.location.href; // www.test.com?filename=test
    var url = new URL(url_string);
    var paramValue = url.searchParams.get("filename");
    alert(paramValue)

उदाहरण के लिए काम नहीं करता है लोकलहोस्ट: 8080 / # /? access_token = 111 स्थान के कारण। यदि '#' चिन्ह स्थान पर है। खोज खाली है
— तिखोनोव

url "#" प्रतीक के साथ समर्थित नहीं है इसलिए हमें इसे हटाना होगा। इसे आज़माएँ: var url_string = window.location.href; // www.test.com?filename=test var url = new URL (url_string.replace ("# /", "")); var paramValue = url.searchParams.get ("access_token"); अलर्ट (परमवैल्यू)
— विष्णु राधाकृष्णन

इंटरनेट एक्सप्लोरर में समर्थित नहीं
— सेबस्टियन शॉले

5

आप जीईटी चर प्राप्त करने के लिए URL का उपयोग कर सकते हैं। विशेष रूप से, window.location.search'(' सहित) के बाद सब कुछ देता है? '। आप यहां window.location के बारे में अधिक पढ़ सकते हैं ।


3

आज मुझे पृष्ठ के अनुरोध मापदंडों को एक सहयोगी सरणी में प्राप्त करने की आवश्यकता थी इसलिए मैंने अपने दोस्तों से थोड़ी मदद के साथ, निम्नलिखित को एक साथ रखा । यह भी एक के बिना मापदंडों हैंडल के रूप में =true ।

एक उदाहरण के साथ:

// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else

var _GET = (function() {
    var _get = {};
    var re = /[?&]([^=&]+)(=?)([^&]*)/g;
    while (m = re.exec(location.search))
        _get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true);
    return _get;
})();

console.log(_GET);
> Object {abc: "123", def: true, xyz: "", something else: true}
console.log(_GET['something else']);
> true
console.log(_GET.abc);
> 123

2

GET पैरामीटर प्राप्त करने के लिए आप वर्तमान पृष्ठ का URL पार्स कर सकते हैं। URL का उपयोग करके पाया जा सकता है location.href।


ध्यान दें कि यह पूरी तरह से विश्वसनीय नहीं है, क्योंकि सर्वर ने आपको कहीं और पुनर्निर्देशित किया हो सकता है। लेकिन यह सबसे अच्छा आप कर सकते हैं।
— जोएल कोएहॉर्न


2

एक नक्शा-कम समाधान:

var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) {
        return paramPair.split(/=(.+)?/).slice(0, 2);
    }).reduce(function (obj, pairArray) {            
        obj[pairArray[0]] = pairArray[1];
        return obj;
    }, {});

उपयोग:

For url: http://example.com?one=1&two=2
console.log(urlParams.one) // 1
console.log(urlParams.two) // 2

1
क्या आप इस बात का पता लगा सकते हैं कि आप इसके लिए मैप-कम समाधान का उपयोग क्यों करेंगे? जहां तक ​​मैं समझता हूं, वास्तव में बड़े डेटासेट को संभालने के दौरान मैप-कम करना कुशल है। के रूप में यह सिर्फ एक HTTP अनुरोध है, मैं एक नक्शा-कम समाधान का उपयोग करने का बिंदु नहीं देखता।
— जार्जजीआरसी

वास्तव map/reduceमें सिर्फ एक संग्रह प्रसंस्करण तंत्र है: किसी भी आकार के डेटा के साथ उपयोग किया जा सकता है। यह बड़े डेटा के लिए समानांतर होने की इच्छा के कारण अधिक प्रसिद्ध है
— स्टीफनबॉश

1

अन्य उत्तरों के विपरीत, UrlSearchParams ऑब्जेक्ट रेगेक्स या अन्य स्ट्रिंग हेरफेर का उपयोग करने से बच सकता है और जो उपलब्ध है वह सबसे आधुनिक ब्राउज़र है:

var queryString = location.search
let params = new URLSearchParams(queryString)
// example of retrieving 'id' parameter
let id = parseInt(params.get("id"))
console.log(id)

क्या आप कृपया इस उत्तर को थोड़ा और अलग करने के लिए कुछ स्पष्टीकरण जोड़ सकते हैं?
— गिउलिओ कैसिन

0

यहाँ फ़ंक्शन नाम से पैरामीटर लौटाता है। छोटे परिवर्तनों के साथ आप बेस यूआरएल, पैरामीटर या एंकर को वापस करने में सक्षम होंगे।

function getUrlParameter(name) {
    var urlOld          = window.location.href.split('?');
    urlOld[1]           = urlOld[1] || '';
    var urlBase         = urlOld[0];
    var urlQuery        = urlOld[1].split('#');
    urlQuery[1]         = urlQuery[1] || '';
    var parametersString = urlQuery[0].split('&');
    if (parametersString.length === 1 && parametersString[0] === '') {
        parametersString = [];
    }
    // console.log(parametersString);
    var anchor          = urlQuery[1] || '';

    var urlParameters = {};
    jQuery.each(parametersString, function (idx, parameterString) {
        paramName   = parameterString.split('=')[0];
        paramValue  = parameterString.split('=')[1];
        urlParameters[paramName] = paramValue;
    });
    return urlParameters[name];
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.