Я пытаюсь вставить пару ключ/значение в serializeArray (из jQuery).
Таким образом, у меня есть что-то как
var form = $('#form');
var sendFormData = form.serializeArray();
sendFormData.push({ "name": "Name", "value": "test"});
В Firefox это работает все же в IE 8, который я получаю
Строка: 51 Ошибка: Объект не поддерживает это свойство или метод
Таким образом, это, кажется, указывает на эту строку. Делает т.е. 8 не поддерживают нажатие раз так, что является способом, которым я могу добавить пару ключ/значение, которая будет работать во всех браузерах (5 Firefox электросети, ie8, хром, опера, сафари)
То, что у вас есть, работает (даже в IE8), вы можете протестировать это здесь: http://jsfiddle.net/ZAxzQ/
Должно быть что-то помимо вопроса, что вы делаете, чтобы получить это error:)
.push ()
существует столько же, сколько и объект Array , я никогда не видел браузера, который не поддерживает его .. . ваша неподдерживаемая ошибка имеет , чтобы быть вызванной чем-то другим.
Это не исчерпывающий ответ, так как он не решит вашу проблему, но Array. push()
метод работает в IE8:
var arr = [];
arr.push({ "name": "Test Name", "value": "Test Value"});
alert(arr[0].name); // Displays "Test Name"
Вышеприведенное можно также переписать следующим образом:
var arr = [];
arr[arr.length] = { "name": "Test Name", "value": "Test Value"};
alert(arr[0].name); // Displays "Test Name"
Конечно, простейшее другое решение - это сделать что-то вроде этого:
var sendFormData = $("#form").append("<input id='someuniqueID' type='hidden' name='name' value='test' />").serializeArray();
$("#someuniqueID").remove(); //optional could keep it in there if you wanted
У меня нет доступа к банкомату IE, но я уверен, что он поддерживает push. Убедитесь, что sendFormData считается массивом:
Object.prototype.toString.call(sendFormData) === '[object Array]';
IE любит делать еще кое-что, это сообщать вам об ошибке в строке после того, как произошла ошибка, поэтому он может быть частью строки form.serializeArray ().