フォームを 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」および空のフォームは単なる例です。私のアプリケーションでは、動的に構築されたフォーム内の隠しコントロールとして指定した POST データを受け入れる "action=" の正当な URL がフォームに含まれています。
代わりに、構築されたフォームを html の要素にロードしてから実行する$('#frm').submit()
と、機能します。しかし、私はむしろその道を行きたくありません。
これは既知の/予想される動作ですか、それとも何か間違ったことをしていますか?
~ ~ ~
<form>
@DavidThomas に応えて、ASP .NET .ashx ハンドラーへの .get() 呼び出しを介して構築しています。とその内容への露出を最小限に抑えようとして<form>
います。
$.get('./ConstructForm.ashx', function (data) { $(data).submit(); })
.fail(function () { alert('fail!'); });
これを行うためのより安全な方法についての推奨事項は確かに歓迎しますが、それはおそらく別の質問の主題になるでしょう.
~ ~ ~
価値のあるものとして、私のアプローチは最初はこれに基づいていました: https://stackoverflow.com/a/2054741/1530187
私は、既存の要素の代わりに、jQuery オブジェクトの構築された文字列を使用してこれを実行しようとしています。これは、ユーザーが送信前または送信後にブラウザーを介してフォームを検査する能力を最小限に抑えるためです。