我正在尝试生成一个包含多个javascript变量的动态url,但我只想在它们包含信息的情况下包括它们。
这些变量实质上是过滤器,将用于从MYSQL数据库中进行选择,因此它们的形式为“ column = value”。
我尝试生成的网址必须采用以下格式:
page.php?column1=value1&column2=value2....
等
我正在努力找出如何仅包含包含信息的变量,然后如何在每个变量之间插入所需的“&”。
当前代码在下面,当前仅包含两个变量,但目标是最多5个。
var jsedibility = "";
function chosenEdibility(choice){
jsedibility = choice;
}
var jsfrequency = "";
function chosenFrequency(choice2){
jsfrequency = choice2;
}
function setFilters(){
window.location='search.php?' + jsedibility+"&"+jsfrequency;
}
然后我正在使用分配给按钮的"onClick=setFilters()"
来加载相关页面。
如何进行设置,以便动态生成URL,该URL仅包含其中包含数据的变量,并在每个变量之间添加所需的“&”。
非常感谢您的帮助:)
答案 0 :(得分:2)
我将创建一个变量数组,然后使用join()。
var filters = [];
使用if语句检查它们是否不是空字符串。
if (jsedibility != ""){ filters.push(jsedibility) }
var filtersString = filters.join('&');
然后在您的setFilters()中,
window.location.assign('./' + filtersString)
答案 1 :(得分:0)
这适用于任何数量的变量。
<button id="setFilters">Filters</button>
// mockup data
const choice = 'ch1'
const choice2 = 'ch2'
const array = []
var jsedibility = "";
function chosenEdibility(choice) {
jsedibility = choice;
}
var jsfrequency = "";
function chosenFrequency(choice2) {
jsfrequency = choice2;
}
// showing that it can be filtered out
var noValue = "";
function chosenNoValue(choice3) {
noValue = choice3;
}
chosenEdibility(choice)
chosenNoValue('') // empty value
chosenFrequency(choice2)
document.getElementById('setFilters').addEventListener('click', function(e) {
array.push(jsedibility)
array.push(noValue)
array.push(jsfrequency)
// string filtered for not empty values
const filterString = array.filter(el => el !== '').join('&')
console.log(filterString)
})
或另一个带有数组的
<button id="setFilters">Filters</button>
"start": "NODE_ENV=production server.js",