0

2ページにわたってフォームを送信する方法を教えてもらえますか?2ページ目でフォームを閉じても、最初のページの情報が自動的に送信されます。

例えば

ページ1:氏名の電子メール電話番号

ユーザーが送信をクリックします...

ページ2:詳細を送信していただきありがとうございます。コールバック時間を選択してください。

次に、ユーザーはウィンドウを閉じるか、コールバック時間を入力して送信を押しますが、2ページ目のウィンドウを閉じてコールバック時間を入力しなくても、元の情報を送信する必要があります。

おそらくセッション変数を使用して情報を保存し、ウィンドウが閉じている場合はjavascript / jqueryを使用してフォームを送信することを考えていましたか?

誰かがこれを行うのが最善だと提案できますか?

データをMySQLテーブルに挿入してから、CURLを使用してデータを投稿していることにも言及する必要があります。したがって、データベースに非常に簡単に挿入し、コールバック時間が送信された場合は最後のIDに対して更新ステートメントを実行することができます。

しかし、2番目のフォームページでウィンドウが閉じられた場合に最後のMySQLレコードを投稿する方法がわかりませんか?

4

3 に答える 3

1
$(window).bind('beforeunload', function() { 
    $("#form-submit").click();
});

ここで、#form-submitは送信ボタンのIDです。

于 2012-11-29T13:43:04.937 に答える
1

このbeforeunloadイベントは、ユーザーが何らかの理由でページを離れるたびに発生します。

たとえば、ユーザーがフォームを送信したり、リンクをクリックしたり、ウィンドウ (またはタブ) を閉じたり、アドレス バー、検索ボックス、またはブックマークを使用して新しいページに移動した場合に発生します。

次のコードを使用して、フォームの送信とハイパーリンク (他のフレームを除く) を除外できます。

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink || confirm("Do you really want to close?"); 
})

このliveメソッドは送信イベントでは機能しないため、新しいフォームを追加する場合は、ハンドラーもそれにバインドする必要があります。

別のイベント ハンドラーが送信またはナビゲーションをキャンセルした場合、後でウィンドウが実際に閉じられると、確認プロンプトが失われることに注意してください。submitおよびclickイベントに時間を記録しbeforeunload、数秒以上後に が発生するかどうかを確認することで、これを修正できます。

于 2012-11-29T13:52:24.403 に答える
0

あなたは本当にできません。

$(window).bind('beforeunload', function() { 
    // Do submit here
});

うまくいくように見えるかもしれませんが

a)通常のフォーム送信(つまり、POSTまたはGETを使用して別のページにリダイレクトする)は、アンロード前のフェーズでは許可されないため、機能しません。

b)AJAXフォームの送信発生しますが、ブラウザはコールバックが発生するのを待たず、コードの実行後にウィンドウを閉じるため、送信が到着するかどうかはわかりません。

于 2012-11-29T14:04:38.643 に答える