动态将Javascript变量附加到URL

时间:2019-06-22 18:53:28

标签: javascript php

我正在尝试生成一个包含多个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仅包含其中包含数据的变量,并在每个变量之间添加所需的“&”。

非常感谢您的帮助:)

2 个答案:

答案 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",