Существует как минимум три проблемы с этим фрагментом кода:
var sub = el.getElementsByTagName('input');
query = new Array();
for (i in sub) {
if (sub[i].name) {
query.push(sub[i].name + '=' + sub[i].value);
}
}
Во-первых, всегда объявляйте свои переменные в локальной области, используя var
, поэтому используйте
var query = new Array();
for (var i in sub) {
Во-вторых, getElementsByTagName
возвращает NodeList
, который является массивоподобным объектом. Никогда итерация по массиву (подобному объекту) с использованием цикла for … in
, всегда используйте обычный цикл for
.
В-третьих, всегда используйте encodeURIComponent
для правильного кодирования параметров запроса:
for (var i = 0, len = sub.length; i < len; i++) {
if (sub[i].name) {
query.push(sub[i].name + '=' + encodeURIComponent(sub[i].value));
}
}
Это может решить вашу проблему с IE.