代码之家  ›  专栏  ›  技术社区  ›  chobo2

IE 8不支持推送吗?

  •  6
  • chobo2  · 技术社区  · 15 年前

    我正在尝试将一个键/值对插入到序列化数组中(从jquery)。

    所以我有点像

    var form = $('#form');
    var sendFormData = form.serializeArray();
    sendFormData.push({ "name": "Name", "value": "test"});
    

    在firefox中,这在IE8中仍然有效

    此属性或方法

    5 回复  |  直到 15 年前
        1
  •  11
  •   Nick Craver    15 年前

    您所拥有的功能(即使在IE8中)也可以在此处进行测试: http://jsfiddle.net/ZAxzQ/

    一定是问题之外的东西导致了这个错误:)

    .push() 一直以来 Array 对象,我从没见过这样的浏览器 从别的地方来。

        2
  •  1
  •   Daniel Vassallo    15 年前

    这不是一个详尽的答案,因为它不会解决你的问题,但 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"
    
        3
  •  1
  •   Psytronic    15 年前

    Object.prototype.toString.call(sendFormData) === '[object Array]';
    

    IE喜欢做的另一件事是,在错误发生后告诉您行中有错误,因此它可能是form.serializeArray()行的一部分。

        4
  •  1
  •   colinbashbash    13 年前
        5
  •  0
  •   Psytronic    15 年前

    当然, 另一个解决方案是这样做:

    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