jQuery - построить красивый URL -адрес из параметров

StackOverflow https://stackoverflow.com/questions/5809939

  •  25-10-2019
  •  | 
  •  

Вопрос

jQuery имеет param() Функция, я ищу аналогичную функциональность. Мне нужно вернуть URL в свой объект. Например:

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

это вернет URL в форме example.com/?page=1&perPage=5 или что -то подобное. Как я могу сформировать URL example.com/page/1/perpage/5?

Это было полезно?

Решение

Вы можете создать свою собственную функцию:

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

Единственная проблема заключается в том, что порядок параметров не гарантируется (что не является проблемой для строк запроса, но может быть для такого рода URL). Вы также можете добавить чек, если base Уже заканчивается ударом или нет.

Другие советы

Просто идея :)

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

Затяните это в конце:

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

вот так:

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

Отредактировано, чтобы указать в Re на озабоченность Феликса Клинга? S: Это только удалит первое? оставляя какие -либо другие? Совершенно безопасно использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top