我正在为我的网址构建一个查询字符串,需要从编码中排除某些字符。
我想排除“&”和“=”以便我可以这样说:
first = blah& second = blah等等......
我想最好的方法是如何阻止它们被编码?
一些代码:
else if (array[i].nodeName == "SELECT") {
if (array[i].id == "multiple") {
var selected = $.map($('#multiple option:selected'),
function (e) {
return $(e).val();
});
$.each(selected, function (index, value) {
name = array[i].name;
values += app + "\&" + key + "=";
});
} else {
name = arr[i].name;
values = arr[i].value;
}
}
key = encodeURIComponent(name);
value = encodeURIComponent(values);
queryString += name + "=" + values + "&";
答案 0 :(得分:1)
有没有办法从
encodeURIComponent
排除某些字符?
没有。它是一个内置函数,只需要一个参数。
当它出现在键或值的中间时,您需要对&
进行编码,因此最简单的解决方案是在组合它们之前对各个名称和值进行编码。定义
function emit(name, value) {
queryString += (queryString.indexOf("?") >= 0 ? "&" : "?")
+ encodeURIComponent(name) + "=" + encodeURIComponent(value);
}
然后为多个选择中的每个名称/值对调用该函数,或者为每个其他选中的输入调用一次。
else if (array[i].nodeName=="SELECT" ){
if(array[i].id == "multiple"){
var selected = $.map( $('#multiple option:selected'),
function(e){return $(e).val();});
$.each(selected, function(index, value){
emit(array[i].name, value);
});
} else {
emit(arr[i].name, arr[i].value);
}
}
使用encodeURI
或类似内容无法正确编码#
,=
或其他必要的代码点。
答案 1 :(得分:0)
函数的名称应该建议如何使用它:在查询字符串的件上调用它,而不是整个查询字符串。
编辑 - 我试图根据您的代码创建一个示例,但我无法弄清楚它正在尝试做什么。目前看来它似乎有语法错误。