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」および空のフォームは単なる例です。私のアプリケーションでは、動的に構築されたフォーム内の隠しコントロールとして指定した 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 オブジェクトの構築された文字列を使用してこれを実行しようとしています。これは、ユーザーが送信前または送信後にブラウザーを介してフォームを検査する能力を最小限に抑えるためです。


-文字クラス内を除いて、エスケープする必要はありません。さらに、最初または最後の文字としてエスケープしないようにすることもできます。

RewriteRuleでは、パターンはドメインではなく URL パスに対してテストされます。ドメインに対してテストする必要がある場合は、RewriteCondを使用できます

RewriteCond %{HTTP_HOST} !example-2.com
RewriteRule ^/?sub/sub-sub/(.*) http://example-2.com/$0 [R,L]

RewriteCond %{HTTP_HOST} example-2.com
RewriteCond %{REQUEST_URI} !^/?sub/sub-sub
RewriteRule .* sub/sub-sub/$0
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 に答える