2

当我将表单作为 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 的回应,我正在构建对<form>ASP .NET .ashx 处理程序的 .get() 调用。我正试图尽量减少<form>对它及其内容的暴露。

$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
    .fail(function () { alert('fail!'); }); 

我当然欢迎有关更安全的方法的建议,但这可能是另一个问题的主题。

~ ~ ~

对于它的价值,我的方法最初是基于此:https ://stackoverflow.com/a/2054741/1530187

我正在尝试使用 jQuery 对象的构造字符串而不是现有元素来执行此操作,以尽量减少用户在提交之前或通过浏览器返回提交之后检查表单的能力。


它在 libmemcached 包中。使用 macports 安装它:

sudo port install libmemcached

然后,假设您使用的是 pip:

pip install pylibmc --install-option="--with-libmemcached=/opt/local"

或者

LIBMEMCACHED=/opt/local pip install pylibmc

pylibmc 文档中所述。

4

1 回答 1

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。

于 2015-08-08T09:09:46.043 回答