Frage JavaScript konvertiert Abfragezeichenfolge in JSON mit jQuery und zurück in Abfragezeichenfolge [geschlossen]


Ich hoffe, Sie finden folgende Funktion nützlich für die Umwandlung von Abfrage-String in JSON-Objekt

var queryStringToJSON = function (url) {
    if (url === '')
        return '';
    var pairs = (url || location.search).slice(1).split('&');
    var result = {};
    for (var idx in pairs) {
        var pair = pairs[idx].split('=');
        if (!!pair[0])
            result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
    }
    return result;
}

Verwendung:

So erhalten Sie die aktuelle Windows-Abfragezeichenfolge

var result = queryStringToJSON() // without any parameter

So erhalten Sie json aus der benutzerdefinierten Abfragezeichenfolge:

var result = queryStringToJSON('?name=prem&age=30&HEIGHT=5.8')

Ausgabe:  {name:"prem", age:"30", height:"5.8"} //All keys are converted into small letters 

Um es zurück zu URL zu konvertieren, können Sie verwenden jQuery-Parameter Methode

$.param(result)

Um Ihre Abfragezeichenfolge zu bearbeiten, können Sie einfach die Standardobjektbearbeitung in JavaScript verwenden und die $ .param-Methode erneut verwenden

result.age=35;
delete result['name']; 

10
2017-12-19 09:30


Ursprung


Antworten:


Arbeiten, aber wenn du benutzt hast url || location.search dann solltest du entfernen if(url === '') return '' oder es sollte so sein,

var queryStringToJSON = function (url) {
    url = url || location.search;// url or location.search
    if (url === '')
        return '';// return if url and location.search not found
    // your remainig code
}

1
2017-12-19 09:39



Alternativ ... Statt:

for (var idx in pairs) {
    var pair = pairs[idx].split('=');
    if (!!pair[0])
        result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}

Versuchen:

result = pairs.reduce(function(a,b) {
     var pair = b.split("=");
     a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
     return a;
},{});

Funktioniert gleich, verwendet aber reduce() was eine native JavaScript-Funktion ist, ist wahrscheinlich schneller.


1
2017-07-12 03:57