0

さて、私はこれをミッションフォームにしようとしています。訪問者が押し始めると、登録後に登録フォーム(私の実際のウェブサイトではありません)を含む新しいタブがポップアップします。この2番目のウェブサイトは、この訪問者を知らせるために何かを送ります彼の登録を完了し、

わかりましたが、これは問題ではありません。ユーザーがミッションを開始したメインの Web ページから登録結果をライブで受信したいのですが、現在のステータスを確認するために特定のページを何度も更新することなくこれを行う方法、ライブで受信したいメインページから登録が完了したら

jquery、javascript、php、またはこれを行う可能性を使用する

4

4 に答える 4

1

最初のページでは、$.ajax (http://api.jquery.com/jQuery.ajax/) を使用して登録情報をデータベースに投稿し、後で 2 番目のページでそれを取得できます (同様に $.ajax を使用) )。問題は、ユーザーが最初のページ (「window.opener」メソッドによって識別される) でビジネスを終了したかどうかを 2 番目のページがどのように知るかということです。これを行うには、setTimeout() を特定の秒ごとに実行して、登録が完了したかどうかを確認します。ある場合は、データベースから情報を取得します。

$.ajax を使用すると、ユーザーのインターネット接続に大きく依存する可能性があり、個人的には遅いと思います。より迅速な方法は、Cookie を使用して、ユーザーが登録を完了したかどうかを確認することです。

また、クライアント側のデータベースとして機能する「ローカル ストレージ」と呼ばれる比較的新しい HTML5 メソッドもあります (Cookie とは異なり、大量のデータをサポートでき、登録フォーム全体を保存できます)。また、リレーショナル データベースのポーリングよりも比較的高速です。

于 2012-06-15T17:28:51.120 に答える
0

jQuery ajaxを使用して登録データをサーバーに送信し、トランザクション (ユーザーをデータベースに保存) が完了すると応答を返します。コールバック関数でそれを取得し、さらに処理を行います (メッセージを表示する/ページの一部をリロードするなど...)。

このように登録データをサーバーページに送信します

$(function(){

   $("form").submit(e){
    e.preventDefault();
       $.post("yourRegistrationProcess.php",$("form").serialize(),function(data){
          //You have the response from server in data variable.
          // Do whatever you want next with that.          
       });
   });

});

ユーザー登録データをテーブルに保存したら、何らかの応答を返すと仮定しますyourRegistrationProcess.php(echo "saved" など)。

于 2012-06-15T17:39:24.727 に答える
0

サーバーはクライアントへの接続を開始できないため、作業が完了したかどうかを確認するためにホームをポーリングする必要があります。ページの更新を防ぐには、ポーリングに AJAX を使用します。

于 2012-06-15T17:11:06.477 に答える