IE 8不支持推送吗?

时间:2010-07-18 20:01:33

标签: javascript jquery internet-explorer cross-browser

我正在尝试将一个键/值对插入到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)

5 个答案:

答案 0 :(得分:11)

你有什么作品(即使在IE8中),你可以在这里测试:http://jsfiddle.net/ZAxzQ/

你必须在问题之外做一些事情才能得到错误:)

.push()Array对象一直存在,我从未见过支持它的浏览器...您的不支持的错误 来自其他东西。

答案 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