我确实为表单选择过滤创建了一个小脚本。 我的目标是,当用户选择“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);
检查请求,那么其他所有请求都是空的...
答案 0 :(得分:2)