我正在尝试将一个键/值对插入到serializeArray中(来自jquery)。
所以我有类似
的东西var form = $('#form');
var sendFormData = form.serializeArray();
sendFormData.push({ "name": "Name", "value": "test"});
在Firefox中,这可以在IE 8中使用
行:51错误:对象不支持 这个属性或方法
所以它似乎指向这条线。那么ie 8不支持push如果是这样的话我可以添加一个可以在所有浏览器中工作的键/值对(5个主要的firefox,ie8,chrome,opera,safari)
答案 0 :(得分:11)
你有什么作品(即使在IE8中),你可以在这里测试:http://jsfiddle.net/ZAxzQ/
你必须在问题之外做一些事情才能得到错误:)
答案 1 :(得分:1)
这不是一个详尽的答案,因为它无法解决您的问题,但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"
答案 2 :(得分:1)
我无法访问IE atm,但我确信它确实支持推送。检查sendFormData是否被视为数组:
Object.prototype.toString.call(sendFormData) === '[object Array]';
IE喜欢做的其他事情,告诉你错误发生后该行有错误,因此它可能是form.serializeArray()行的一部分。
答案 3 :(得分:1)
我以为我遇到了同样的问题;但最终发现我的问题是IE7-IE8没有实现Array.prototype.indexOf。但是,如果您想使用它,可以转到此链接:indexOf。
答案 4 :(得分:0)
当然,最简单的另一种解决方案是做这样的事情:
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