JQuery、Ajax:Serialize() 无法在 IE 中使用 <select>?

JQuery, Ajax: Serialize() not working with <select> in IE?

我确实为表单 select 过滤创建了一个小脚本。 我的目标是,当用户 select 的内容让我们说 "field1" 时,"field2" 将被过滤后的 PHP 替换,只有 select离子离开(通过数组中的数据完成)。

我的 JQuery 在几乎所有现代浏览器中都能正常工作:

$(".ajx").on("change", function() {
    var $form = $('form');
    var $fields = $(".ajx");
    var method = $form.attr("method").toUpperCase();
    var $this = $(this);
    //var $ser = $fields.serialize();
    var $ser = $this.serialize();

    console.log($ser);
    //console.log($(this))

    $('.ajx_load').show();

    $.ajax({
        url: $form.attr("action"),
        data: $ser,
        type: method,
        success: function(res) {
            //$('.ajx').html($(res).find('.ajx div'));
            //$this.html($(res).find('.ajx div'));

            var $fnd = '#' + $this.attr('id') + ' div';
            $this.html($(res).find($fnd));

            console.log($this.attr('id'));
            console.log($this.html($(res).find($fnd)));

            $('.ajx_load').hide();
        },
        error: function (xhr, status) {  
            $('.ajx_load').hide();
            alert('Unknown error - status: ' + status); 
        }
    });
});

代码应重新加载 <fieldset class="axj" id="ajx_1"><div> 中的 html 代码,保留字段上的 selection 并替换此 [=16= 中的所有 <select> 字段] 通过 PHP.

过滤的

这是使用的 HTML 输出(没有 PHP):http://jsfiddle.net/69rvLtcn/8/

serialize() 函数在 IE(已在 IE11 中测试)和 Safari 中不起作用 - 它是空的!

提前感谢您的帮助

编辑: 我试图在 "success: function" 中设置一个 setTimeout()。 当我这样做时(即使我将其设置为 1),在 IE/Safari 中发生的相同事情也会在其他所有浏览器上发生...?

好像select离子没有在JQuery响应中传输?!

EDIT2:毕竟是 IE!它以某种方式不序列化请求...?如果我在 PHP 中,我在 IE/Safari 中用 var_dump($_REQUEST); 检查请求,它在所有其他人中都是空的,而不是...

得到解决方案:

JQuery:

The .serialize() method should be called on a form or on a set of inputs.

来源:http://bugs.jquery.com/ticket/9863