これは従来のコードです。 私はiframeを使ってAJAXをシミュレートするプロジェクトに取り組んでいます。iframe "AJAX"から適切なAJAXに切り替える
基本的には、target属性を使用してiframeに<form>
を送信しているため、新しいタブが開かれないというリクエストが発生しています。また、PHPからの応答に<script></script>
をエコーし、結果はiframeに入力されるため実行されます。
<form id="form_to_submit" method="POST" action="ajax/createUser" target="iframe_name">
<input type="text" name="input_to_send">
<button type="button" onclick="$('#form_to_submit').submit()">Submit With Onclick!</button>
</form>
今日では、これが悪に見えるだけでなく、1(おそらく他の)巨大な落とし穴があります。
はここで、このような<form>
の例です。このプロセスを通じて1つのリクエストが行われ、クライアントがどこかに行ってブラウザの履歴に戻ると、リクエストが再度送信されます。
この最後の問題を解決するには、多くの解決策があります。私が最も好むのは、iframeの代わりに実際のAJAXを使うことです。理論的には、AJAXを使用するためにソースコード内のすべての単一フォームを変更することができましたが、私はこの目的のためだけに1週間の作業をしないことを知っています。
これらのリクエストをiframeに送信する前にこれらのリクエストを傍受し、代わりにAJAXで送信するための「迅速な」方法を探しています。
はこれまでのところ、私はtarget="iframe_name"
を持っているし、同じ方法/ URL /データと要求を再送信するためにsubmit
イベントに耳を傾ける<form>
タグをターゲットにしようとしました。
$('form[target=iframe_name]').on('submit', function (event) {
event.preventDefault(event);
var url = $(this).attr('action'),
datas = $(this).serialize();
$.post(url, datas).done(function (response) {
eval($(response).text());
});
});
ただし、送信ボタンを実際にクリックして送信した場合にのみ機能します。私は、これらのケースの95%がonclick
タグによって提出され、.submit()
のフォームを提出し、これらのケースでは、submit
イベントが発生しないと言います。
私は固執していますか?
注:jqueryには、JSのlib/frameworkとまだ関連しているにも関わらず、使用できることを知らせるためにjqueryにタグを付けるだけです。
達成したいことを説明したので、試したことを説明しました。あなたの試行のソースコードはどこですか?あなたの試行で問題と思われるもの.... – NewToJS
質問では、ほとんどの '' '' ''
'onsubmit =" myfunction() "'を使ってみましたか、javascriptでイベントリスナーを作成して 'submit'を聞きましたか? – NewToJS