2016-12-20 2 views
0

Gibt es eine Funktion, die ich zum Konvertieren eines einfachen JavaScript-Hash/Objekts in eine Abfragezeichenfolge importieren kann? SoGibt es eine importierbare Funktion, um ein JavaScript-Objekt in eine Abfragezeichenfolge zu konvertieren?

, hier sind die Anforderungen:

  • nicht auf jQuery basieren kann (I Fast Boot Support benötigen)
  • Muss verschachtelte Objekte &-Arrays unterstützen.
  • Muss in Ember Rahmen (keine Plugins)

ich eine andere Plugin Abhängigkeit haben bin nicht wirklich will, gebaut werden, da ich weiß, dass dies in Ember intern erfolgt.

aktualisieren Um zu klären, was ich durch verschachtelte bedeuten: ein Objekt mit verschachtelten Array oder Objekteigenschaften wird an der Konsole Syntax konvertieren, die Rails kennt:

{my_values: [1,2]} => ?my_values[]=1&my_values[]=2

{nested: {key: value}} => ?nested[key]=value

+1

Bitte beachten Sie auch diese Antwort, könnte es Ihnen helfen: http://stackoverflow.com/a/1714899/1370336 –

+0

Sie die Abfrage Stachel schreiben kann dann die laufen encodeURIComponent-Methode zum Formatieren für die Verwendung in der URL. –

+0

Das ist, was [jQuery's $ .param] (http://james.padolsey.com/jquery/#v=1.11.2&fn=jQuery.param) tut, können Sie das ohne Abhängigkeiten von jQuery einfach neu schreiben – adeneo

Antwort

0

Dies würde es tun:

function toQueryString (obj){ 
    var result =[]; 
    for(var i in obj){ 
     if(obj.hasOwnProperty(i)){ 
      if(typeof obj[i] === "object") result.push(toQueryString(obj[i])) 
      else result.push(encodeURIComponent(i) + "=" + encodeURIComponent(obj[i])); 
     } 
    } 
    return result.join("&"); 
} 

Example

Edit: hinzugefügt Rekursion für verschachtelte Objekte

+0

" Müssen verschachtelte Objekte und Arrays unterstützen. " Nicht wirklich sicher, was der Fragesteller meint, aber diese Lösung wird definitiv nicht mit verschachtelten Werten umgehen. –

+1

Nun, ja, verschachtelte Objekte in einer Abfrage-Zeichenfolge muss geklärt werden ... – qxz

+0

Edited in verschachtelte Objekte recurse ... Ich gehe davon aus, verschachtelte Objekteigenschaften werden genauso behandelt wie Top-Level-Eigenschaften –

Verwandte Themen