如何使用JavaScript安全地编码URL参数,以便可以将其放入GET字符串中,而PHP $_REQUEST
将具有相同的参数名称?
var param = 'name with space';
var value = 'value';
// 'index.php?name with space=value' --> invalid
var get_str0 = 'index.php?' + param + '=' + value;
// 'index.php?name%20with%20space=value' --> valid
// BUT PHP $_REQUEST will have this parameter: 'name_with_space'
// see: https://stackoverflow.com/a/68742/6411540
var get_str1 = 'index.php?' + encodeURIComponent(param) + '=' + encodeURIComponent(value);
我知道这个问题几乎与Encode URL in JavaScript?类似,但是我所能找到的一切都与参数的值有关,而不是参数名称本身。
我在数据可视化网站上工作。所有数据集都存储在SQL数据库中。每个记录都有一些与之关联的标签。这些标签分为几类。
示例:
Records:
Name: 'Carrot',
Tags: ['vegetable', 'Vitamin A', 'Biotin']
Groups:
'Vitamins': ['Vitamin A', 'Biotin']
网站为每个组创建一个<select>
元素,所有链接标签均为<option>
。
用户可以在select语句中选择多个选项,并可以将其与其他组合并。为了从Web服务器查询数据,我生成了一个参数值对列表。
示例:
www.website.com/index.php?Vitamins=Biotin&Food=vegetable
<select>
语句是从数据库动态生成的,每个“组”或“标签”名称都可以包含空格,点,甚至可能包含特殊字符。
答案 0 :(得分:0)
这是我现在使用的:我知道它并不完美,并且我还没有对其进行广泛的测试,但是现在它可以使用了。
JS方面:
var param_name = encodeURIComponent(param_orig.replace(/ /g,"_"));
PHP方面:
$param_name = rawurlencode(str_replace(' ', '_', $param_orig));