.serialize() 并非在所有浏览器中都一致

.serialize() not consistant in all browsers

本文关键字:浏览器 serialize      更新时间:2023-09-26

我正在使用serialize()函数来抓取表单中的所有字段。在极少数情况下,客户打电话说他们保存购物车后只剩下一件商品。经过调查,事实证明,对于某些用户来说,serialize()函数只是提交名为 items[ITEMNUM] = qty 的最后一个项目数组。

.HTML:

<form id="cartitems" action="self">
    <table width="98%" border="0">
        <tr>
            <td style=" font-size:.9em;">title</td>
            <td width="30"> <input name="items[AH33.3600]" class="qty" value="1" /></td>
            <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td>
        </tr>
        <tr>
            <td style=" font-size:.9em;">title</td>
            <td width="30"> <input name="items[PNP-A00SVR30]" class="qty" value="1" /></td>
            <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td>
        </tr>
        <tr>
            <td style=" font-size:.9em;">title</td>
            <td width="30"> <input name="items[A4882+++++107+5X12]" class="qty" value="1" /></td>
            <td width="30" nowrap="nowrap" style="padding-right:10px; border-bottom:1px solid #CCC;">Total</td>
        </tr>
    </table>
</form>

JavaScript :

var subform = $("#cartitems").serialize();
$.ajax({
    beforeSend: function() {        
        $('#cartitems').slideUp().queue(function() {
            $(this).dequeue();
            $('#cartitems').html(' Please wait...  Cart Loading').show();
        });
    },
    url: "/order/ajax/cart",
    type: "POST",
    cache: false,
    data:  subform,
    dataType: "html",
    success: function(html){
        alert('info saved');
    }
});

我采访的最新客户使用的是Firefox 7。

有人看到问题吗?

我在几个浏览器中对此进行了测试,它似乎工作正常 - http://jsfiddle.net/z6P4x/