当我将表单作为jQuery对象的文本传递时,我无法让jQuery的.submit()在IE或Firefox中工作。
例如,以下代码适用于Chrome和Safari,但在IE和Firefox中没有任何反应 - 没有错误,没有任何错误:
$('<form id="frm" action="http://www.stackoverflow.com" method="POST"></form>')
.submit();
注意:上面的“http://www.stackoverflow.com”和空表只是一个例子。在我的应用程序中,我的表单有一个“action =”的合法URL,它接受我在动态构造的表单中指定为隐藏控件的POST数据。
如果我将构造的表单加载到html中的元素中然后执行$('#frm').submit()
,它就可以工作;但是,我宁愿不去那条路。
这是已知/预期的行为还是我做错了什么?
~~~
为了响应@DavidThomas,我通过.get()调用ASP .NET .ashx处理程序来构造<form>
。我试图尽量减少对<form>
及其内容的曝光。
$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
.fail(function () { alert('fail!'); });
我当然欢迎有关更安全的方法的建议,但这可能是另一个问题的主题。
~~~
对于它的价值,我的方法最初基于:https://stackoverflow.com/a/2054741/1530187
我正在尝试使用jQuery对象的构造字符串而不是现有元素,以尽量减少用户在提交之前或通过浏览器提交后检查表单的能力。
答案 0 :(得分:0)
您应该将表单放入HTMl,代码如下
var yourform = $('<form id="frm" action="http://www.stackoverflow.com" method="POST"></form>');
yourform.attr('target', '_blank'); //open in a new tab
yourform.appendTo($(document.body)); // put your form into html
yourform.submit();
适用于IE和Firefox。