我正在修复一些客户端的代码,他将表单输入值由“\ 1”组合成一个隐藏的输入并提交,这是简单的示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button id="btn">send</button>
<form name="test" id="test" method="post" action="test.php">
<input type="hidden" name="a" value="test">
<input type="hidden" name="b" value="123">
<input type="hidden" name="result" id="result">
</form>
<script>
var form = document.getElementById('test'),
str = '';
for (i = 0; i < form.length; i++) {
str += encode(form.elements[i].value + "\1";
}
result = str.split("\1");
document.getElementById('result').value = (result.join("\1"));
form.submit();
</script>
</body>
</html>
Chrome和IE浏览器会很好,但即使我确定合并的字符串是正确的,Firefox也只能获得第一个值。
由于它是一个大项目,我只是帮助修复这样的一些错误,因此我不能更改太多的代码,以防网站的其他部分可能崩溃,所以我真的需要弄清楚为什么Firefox打破由“\ 1”组合的值。
答案 0 :(得分:0)
看起来“\ 1”正在被“SOH”取代..可能是某些语言环境问题
答案 1 :(得分:0)
试试这个
for (i = 0; i < form.length; i++) {
str += encode(form.elements[i].value) + "\\1";
}