Pregunta

jQuery tiene un param() función, estoy buscando una funcionalidad similar. Necesito devolver una URL en mi objeto. Por ejemplo:

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

Esto devolverá una URL en forma de example.com/?page=1&perPage=5 o algo similar. ¿Cómo puedo formar la URL? example.com/page/1/perpage/5?

¿Fue útil?

Solución

Puedes crear tu propia función:

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

El único problema es que el orden de los parámetros no está garantizado (lo cual no es un problema para las cadenas de consulta, sino que podría ser para este tipo de URL). Es posible que también desee agregar un cheque si base ya termina con un corte o no.

Otros consejos

Solo una idea :)

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

Atrae esto al final:

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

al igual que:

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

Editado para señalar en re en la preocupación de Felix Kling sobre? S: ¿Esto solo eliminará el primero? Dejando cualquier otro? s que formen parte de la cadena de consulta intacta. Perfectamente seguro de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top