Проблема с вашим кодом заключается в том, что он предопределяет все параметры запроса с помощью &
- за исключением sessionBrand
. В URL-адресе необходимо, чтобы параметр first начинался с ?
, а все остальные с &
. Как вы видели, ваш код не делает этого, когда нет sessionBrand
.
Есть несколько способов исправить это. Наверное, самое приятное, что я могу придумать, - это собрать различные части, как вы, но без никаких префиксов - затем соединить их все вместе в конце. Вот так (я только что видел решение Виктора, это точно такая же идея, но более аккуратная, потому что он переписал больше вашего предыдущего кода):
if(sessionBrand)
var brand = 'brand='+sessionBrand;
else
var brand = '';
if(sessionModel)
var model = 'model='+sessionModel;
else
var model = '';
if(sessionCategory)
var category = 'category='+sessionCategory;
else
var category = '';
if(sessionKeyword)
var keyword = 'keyword='+this.sessionKeyword;
else
var keyword = '';
var queryString = '?' + [sessionBrand, sessionModel, sessionCategory, sessionKeyword].filter(function(str) {
return str.length > 0;
}).join("&");
var newUrl = url+queryString;