JQuery,Ajax:Serialize()在IE中没有使用<select>?</select>

时间:2015-02-12 13:44:52

标签: jquery ajax forms internet-explorer serialization

我确实为表单选择过滤创建了一个小脚本。 我的目标是,当用户选择“field1”中的某些内容时,“field2”将被一个带有PHP的已过滤的内容替换,只剩下选择(通过数组中的数据完成)。

我的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代码,保留对该字段的选择,并通过PHP过滤掉此<select>中的所有<fieldset>字段。

以下是使用的HTML输出(不含PHP):http://jsfiddle.net/69rvLtcn/8/

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

先谢谢你的帮助

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

就像选择不是在JQuery响应中传输的那样?!

EDIT2:毕竟是IE!它不知何故没有序列化请求......?如果我在PHP中使用IE / Safari中的var_dump($_REQUEST);检查请求,那么其他所有请求都是空的...

1 个答案:

答案 0 :(得分:2)

得到解决方案:

JQuery的:

  

应该在表单或一组输入上调用.serialize()方法。

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