2012-07-19 11 views
8

पर क्वेरी स्ट्रिंग को Deserialize ?...&foo=bar&... से बनाने के लिए प्रयास किया गया लेकिन यह गुम हो गया और केवल jQuery.params पर मिला जो विपरीत है। कृपया कोई सुझाव (अंतर्निहित जावास्क्रिप्ट फ़ंक्शन, jquery, underscore.js - सभी चला जाता है)? या, क्या मुझे इसे अपने आप लागू करने की ज़रूरत है (एक बड़ी परेशानी नहीं, बस पहिया को फिर से शुरू करने की कोशिश नहीं कर रहा है)?जेएसओएन ऑब्जेक्ट

+2

अच्छी तरह से यहाँ क्या करेंगे तुम जाओ: http://stackoverflow.com/questions/901115/get -query-string-values-in-जावास्क्रिप्ट। एक छोटी सी खोज हमेशा मदद करता है। – ggozad

+0

@ggozad: जेएसओएन/ऑब्जेक्ट * में * रूपांतरण के लिए खोज की गई, न केवल * मूल्य प्राप्त करना *। लिंक के लिए धन्यवाद! दुख की बात यह है कि यह फ़ंक्शन कहीं भी jQuery में मानक नहीं है। – BreakPhreak

उत्तर

4

आपके पास बेन आलमैन jQuery BBQ और jQuery.deparam है। यह वर्णन किया गया है के रूप में The opposite of jQuery.param, pretty much.

http://benalman.com/code/projects/jquery-bbq/examples/deparam/

पहले उदाहरण आप वास्तव में क्या जरूरत है।

6

मैं यहां अपना कार्य यहां पोस्ट कर रहा हूं अगर अन्य लोग देखेंगे और सीधे इसे सीधे प्राप्त करना चाहते हैं jquery देशी JS की आवश्यकता नहीं है। क्योंकि मैं एक ही बात के लिए देख रहा था और अंत में अन्य लोगों के जवाब देखने के बाद इस समारोह बना दिया:

function queryStringToJSON(queryString) { 
    if(queryString.indexOf('?') > -1){ 
    queryString = queryString.split('?')[1]; 
    } 
    var pairs = queryString.split('&'); 
    var result = {}; 
    pairs.forEach(function(pair) { 
    pair = pair.split('='); 
    result[pair[0]] = decodeURIComponent(pair[1] || ''); 
    }); 
    return result; 
} 


console.log(queryStringToJSON(window.location.href)); 
console.log(queryStringToJSON('test=1&check=wow'));//Object {test: "1", check: "wow"} 
6

असल @talsibony से ऊपर जवाब खाता क्वेरी स्ट्रिंग सरणियों (जैसे test=1&test=2&test=3&check=wow&such=doge के रूप में) पर ध्यान नहीं देता। यह मेरा दिया गया है:

function queryStringToJSON(qs) { 
    qs = qs || location.search.slice(1); 

    var pairs = qs.split('&'); 
    var result = {}; 
    pairs.forEach(function(p) { 
     var pair = p.split('='); 
     var key = pair[0]; 
     var value = decodeURIComponent(pair[1] || ''); 

     if(result[key]) { 
      if(Object.prototype.toString.call(result[key]) === '[object Array]') { 
       result[key].push(value); 
      } else { 
       result[key] = [ result[key], value ]; 
      } 
     } else { 
      result[key] = value; 
     } 
    }); 

    return JSON.parse(JSON.stringify(result)); 
}; 
1

सरल और सपाट क्वेरी स्ट्रिंग के लिए, कुछ इस तरह चाल

const queryStringToObject = (queryString) => { 
    let obj = {} 
    if(queryString) { 
    queryString.slice(1).split('&').map((item) => { 
     const [ k, v ] = item.split('=') 
     v ? obj[k] = v : null 
    }) 
    } 
    return obj 
} 
संबंधित मुद्दे