Javascript 为什么window.location.href.split(";?";)数组本身正在更改其值
我试图通过在URL中提供单选按钮的值作为查询参数,在单击单选按钮(城市列表)时重新加载页面。假设我当前的URL是Javascript 为什么window.location.href.split(";?";)数组本身正在更改其值,javascript,arrays,string,browser,location-href,Javascript,Arrays,String,Browser,Location Href,我试图通过在URL中提供单选按钮的值作为查询参数,在单击单选按钮(城市列表)时重新加载页面。假设我当前的URL是 http://localhost:3001/offers?category=Dining&sub_categories=Home%20Delivery&city= 在选择任何单选按钮时,我希望将其值添加到URL中的city参数。 所以所需的URL应该是 http://localhost:3001/offers?category=Dining&sub_categories=Home%2
http://localhost:3001/offers?category=Dining&sub_categories=Home%20Delivery&city=
在选择任何单选按钮时,我希望将其值添加到URL中的city
参数。
所以所需的URL应该是
http://localhost:3001/offers?category=Dining&sub_categories=Home%20Delivery&city=Mumbai
但问题是,在修改URL时,子类别
会自动剥离,我得到的最终URL是这个
http://localhost:3001/offers?category=Dining&city=Mumbai
以下是我操作URL的代码:
$(document).on('click', '.city-selector' ,function(event) {
event.preventDefault() ;
var city_name = this.labels[0].textContent.trim().split("(")[0].trim() ;
var location_string = window.location['href'].split('?');
if(location_string.length > 1 && location_string[1].indexOf("city") > -1){
var all_params = location_string[1].split("&") ;
all_params.splice(all_params.indexOf("city=" + gon.selected_city), 1) ;
all_params.splice(all_params.indexOf("localities=" + gon.selected_localities), 1) ;
gon.selected_localities = '' ;
location_string[1] = all_params.join("&") ;
location_string[1] = location_string[1] + "&city=" + city_name ;
window.location.href = location_string[0] + "?" +location_string[1] ;
}
}) ;
提示:问题在于
location_string=window.location['href'].split('?')
当我记录位置\u字符串
数组时,它不包含子\u类别
参数。不知道是哪件东西把它剥掉了 实现这一目标的一种方法是: var url=window.location.href var urlParams=url.split(“?”) 如果(urlParams.length>1){ urlParams=urlParams[1]。拆分('&') 映射(函数(param){ }) window.location.href=url.split('?')[0]+'?'+urlparms.join('&') }否则{ window.location.href=urlParams[0]+'?'+'城市='+城市名称
}实现这一目标的一种方法是: var url=window.location.href var urlParams=url.split(“?”) 如果(urlParams.length>1){ urlParams=urlParams[1]。拆分('&') 映射(函数(param){ }) window.location.href=url.split('?')[0]+'?'+urlparms.join('&') }否则{ window.location.href=urlParams[0]+'?'+'城市='+城市名称
}我认为应该使用正则表达式替换url:
var url = 'http://localhost:3001/offers?category=Dining&sub_categories=Home%20Delivery&city=';
var cityName = 'Mumbai';
var cityParams = 'city=' + cityName;
var newUrl = url + '&' + cityParams;
if (url.indexOf('?') === -1) {
newUrl = url + '?' + cityParams;
} else if (url.indexOf('city=') > -1) {
newUrl = url.replace(/(city=[\w\d%_]*)/g, cityParams);
}
它还可以处理url,如:
我认为应该使用正则表达式替换url:
var url = 'http://localhost:3001/offers?category=Dining&sub_categories=Home%20Delivery&city=';
var cityName = 'Mumbai';
var cityParams = 'city=' + cityName;
var newUrl = url + '&' + cityParams;
if (url.indexOf('?') === -1) {
newUrl = url + '?' + cityParams;
} else if (url.indexOf('city=') > -1) {
newUrl = url.replace(/(city=[\w\d%_]*)/g, cityParams);
}
它还可以处理url,如:
-负<代码>启动代码>参数;没有
localities=
。无法复制这种行为,是不是有小提琴之类的东西?@Caramiriel正确地指出问题在于拼接方法。它的第一个参数是接收-1值,这就是它开始从后面剥离参数的原因,-负start
parameter;没有localities=
。无法复制这种行为,是不是有小提琴之类的东西?@Caramiriel正确地指出问题在于拼接方法。它的第一个参数是接收-1值,这就是它开始从后面剥离参数的原因,