2017-12-30 17 views
0

Ich versuche, eine Abfrage-String zu erhalten, die wie folgt aussieht erhalten:Ordentlich Query-String mit comma separated values ​​

?focuses=coding,robotics,electronics&format=clp,hlp 
// or this 
?focuses=coding,robotics,electronics 
// or this 
?focuses=coding&format=clp 

Ich habe daran gearbeitet:

// formats = ['hlp', 'clp'], focuses = ['coding', 'robotics'] 
var query = jQuery.param({formats, focuses}); 
query = query.replace(/%5B%5D/g, ''); 
query = query.replace(/(?!^)&formats=/g, ','); 
query = query.replace(/(?!^)$focuses=/g, ','); 

Aber ich halte irgendwie endet up mit:

?formats=hlp,clp,coding,robotics,electronics 

Antwort

1

Eine benutzerdefinierte Funktion wäre:

function query(args){ 
    return "?" + Object.entries(args).map(([key, value]) => { 
    return key +"="+ value; 
    }).join("&"); 
} 

So kann man tun:

query({ 
    focuses:["what", "ever"], 
    a:"property" 
}); 
+0

[Try it] (http: // jsbin.com/todotapule/edit?console) –

0

Sie können so tun. Wenn Sie keine wiederverwendbare Funktion getQueryString benötigen, können Sie den Code außerhalb dieser Funktion dorthin verschieben, wo Sie ihn benötigen.

var formats = ['hlp', 'clp'], focuses = ['coding', 'robotics','electronics']; 
 

 
function getQueryString(formats, focuses){ 
 
    var formatsString = formats.toString(); 
 
    var focusesString = focuses.toString(); 
 
    var finalString = "?focuses="+focusesString+"&format="+formatsString; 
 
    return finalString; 
 
} 
 

 
var result = getQueryString(formats, focuses); 
 
console.log(result);

1

Ihre Objekte in Form Holen Sie vor dem Start vorbei, sie wollen zu jQuery:

jQuery.param({ 
    formats: formats.join(','), 
    focuses: focuses.join(',') 
}); 

Dieses kodiert noch die Kommas als %2C (was gültig ist), aber wenn Sie wirklich wörtliche Komma verwenden möchten, können Sie sie später ersetzen:

jQuery.param({ 
    formats: formats.join(','), 
    focuses: focuses.join(',') 
}).replace(/%2C/g, ','); 
Verwandte Themen