我正在编写一个脚本,在其中传递一个类似/search?filter1=question-1&filter2=question2
的网址,当更改了问题1或问题2时,它将采用网址,并替换{{1}带有问题值。
我想要构建的一件事是,如果值为空,我希望它删除查询字符串部分。例如,如果问题1的值为question-x
,但2还没有值,则网址将为something
。
我认为可行的是这样的
/search?filter1=something
但是返回null。任何人都可以帮我弄清楚我需要改变什么来获得我想要的输出吗?
答案 0 :(得分:1)
鉴于url / search?filter = question-1,我需要查看名称为问题[1]的元素是否有值,如果有,则将问题1替换为值,如果不是&# 39; t有一个,删除total filter = question-1 string。
从评论中更好地了解您的要求,我使用原始答案的部分内容和部分代码完全重写了我的答案:
$keys = array_keys($_REQUEST);
$shift = array_shift($keys);
同样,这是从我原来的答案中重新设计的,所以会有一些膨胀,但我不想放弃你的问题。
答案 1 :(得分:0)
虽然Drakes的答案很好,但它并不适合我的需要。我最终得到了这个,到目前为止效果很好,但我还在测试它。
var $url = '/search?filter1=question-1&filter2=question-2';
// Break the url into parts.
var $split = $url.split(/([&?])/);
$.each($split, function(indexToRemove, part){
// If the part is a question.
if(typeof part == 'string' && part.indexOf('question-') > -1){
var $number = part.split('=');
// Turns question-number into question[number] so it's a valid selector.
$inputSelector = String($number[1]).replace('-', '[') + ']';
// Get the input, and the value.
var $input = $('[name="' + $inputSelector + '"]');
var $value = getValue($input.closest('.question'));
// If there is an element, and there is a value.
if($input.length > 0 && ($value != '' && $value != undefined)){
$split[indexToRemove] = part.replace($number[1], $value);
} else {
$split.splice(indexToRemove, 1);
}
}
});
$url = $split.join('');
// If for example question-1 has a value of 'Test', and question-2 has no value, $url will now be '/search?filter1=Test'.