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.
我确实为表单 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.