2014-01-28 26 views
0

我固定的一些客戶端的代碼,他結合形式的輸入值組合成隱藏輸入並提交,這是一個簡單的示例代碼火狐由「 1」失蹤字符串以「 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」組合的值。

+1

'\ {數值}'是一個轉義序列。加倍掩蓋反斜槓... – CBroe

回答

0

它看起來像 「\ 1」 是由 「SOH」 ..更換可能是某些地區語言問題

0

試試這個

for (i = 0; i < form.length; i++) { 
     str += encode(form.elements[i].value) + "\\1"; 
    } 
+0

有沒有其他解決方案?前一名程序員使用\ 1在整個項目中隨處拆分,如果我更改了這個變量,我同時修改了數千個代碼,並且我很好奇爲什麼IE和Chrome可以正常運行,但Firebox – Chan

+0

那麼它需要一些我有時間找出其他解決方案。但是你是否檢查過你的'encode'方法缺少右括號?可能是這是一個原因。 –