【问题标题】:JQuery, Ajax: Serialize() not working with <select> in IE?JQuery,Ajax:Serialize() 在 IE 中不能与 <select> 一起使用?
【发布时间】:2015-02-12 13:44:52
【问题描述】:

我确实为表单选择过滤创建了一个小脚本。 我的目标是,当用户在“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); 
        }
    });
});

代码应重新加载&lt;fieldset class="axj" id="ajx_1"&gt;&lt;div&gt; 中的html 代码,保留在该字段上所做的选择,并将此&lt;fieldset&gt; 中的所有&lt;select&gt; 字段替换为通过PHP 过滤的字段。

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

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

提前感谢您的帮助

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

好像JQuery响应中没有传递选择?!

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

【问题讨论】:

  • 可以发html代码吗!
  • 你能在jsfiddle 中重新创建这个吗?如果无法重新创建它,很难说出正在发生的事情。 $('.ajx_load') 是什么?是阻塞指标吗?...
  • jsfiddle.net/69rvLtcn/3 我无法分解 JSFiddle 中的代码来工作,因为我通过 PHP 创建了表单,并且每个字段集都是在更改时新创建的。
  • 您在 id 选择器 $fnd = '#' + $this.attr('id') + 'div' 中添加空格字符。 id 属性不允许使用空格字符:w3schools.com/tags/att_global_id.asp
  • @ZhivkoDonev $fnd 不代表 ID,而是代表 .find() 中的元素。

标签: jquery ajax forms internet-explorer serialization


【解决方案1】:

解决办法:

jQuery:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多