Domanda

jQuery ha una funzione param(), sto cercando una funzionalità simile. Ho bisogno di tornare un URL in mio oggetto. Ad esempio:

url: function() {
  return this.baseUrl + '?' + $.param({page: this.page, perPage: this.perPage});
},

questo restituirà un URL sotto forma di example.com/?page=1&perPage=5 o qualcosa di simile. Come posso formare il example.com/page/1/perpage/5 url?

È stato utile?

Soluzione

È possibile creare la propria funzione:

function build(base, params) {
    for(var k in params) {
        if(params.hasOwnProperty(k)) {
            base += '/' + k + '/' + params[k];
        }
    }
    return base;
}

L'unico problema è che l'ordine dei parametri non è garantito (che non è un problema per stringhe di query, ma potrebbe essere per questo tipo di URL). Si potrebbe anche voler aggiungere un controllo se base chiude già con una barra o meno.

Altri suggerimenti

Solo un'idea:)

'example.com/?page=1&perPage=5'.replace(/[&=]/g,'/').replace('?','')
 .toLowerCase();

tack questo alla fine:

replace(/[&=]/g,'/').replace('?','')

in questo modo:

url: function() {
  return (this.baseUrl + '?' + $.param({page: this.page, perPage: this.perPage})).replace(/[&=]/g,'/').replace('?','');
},
?

a cura di sottolineare in re alla preoccupazione di Felix Kling di 's: Questo eliminerà solo il primo? lasciando ogni altro s? 'che fanno parte della stringa di query intatto. Perfettamente sicuro da usare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top