0

私はphpコンソールアプリケーションベースのSQLデータベースシンクロナイザーを開発しています。これは基本的に、あるデータベースから別のデータベースへの更新です。コンソールアプリでもいいのですが、10分ジョブのライブレスポンスのあるWebページを作りたいです。お気に入り:

Updating product#1 .... READY!

Updating product#2 .... 

私の質問は、どうすれば AJAX でこれを行うことができますか? それ以降ではなく、PHP反復内から応答を発生させるイベントはありますか? それとも、AJAX リクエストを繰り返し行う必要がありますか?

ありがとうございました!

4

2 に答える 2

1

PHP 側で呼び出されるイベントではなく、クライアント側で JS 関数をトリガーするために使用できるものです。少なくとも、簡単にはできません。コメットのようなものを使用して、本当にインタラクティブな結果を得ることができます。ただし、次のようにすると、はるかに簡単になると思います。php スクリプトは、$_GET パラメータからの product_id に基づいて、呼び出しごとに 1 つの製品のみを処理します。そして、このスクリプトは、要求された製品を処理した後、次に処理する製品の ID を返します。したがって、Proceed.php スクリプトの onComplete イベントで初めて AJAX を呼び出すだけで、この AJAX 呼び出しで「Updating product#1 .... READY!」というメッセージが表示され、次に進む製品の ID が取得されます。そして、それはすべてが完了するまでです:)

于 2013-06-05T10:56:32.287 に答える
0

このようなイベントはありませんが、次のように ajax 呼び出し中に進行状況のパーセンテージを取得できます

 $.ajax({
                        xhr: function()
                        {
                            var xhr = new window.XMLHttpRequest();
                            //Upload progress
                            xhr.upload.addEventListener("progress", function(evt){
                                if (evt.lengthComputable) {
                                    var percentComplete = (evt.loaded / evt.total)*100;
                                    //Do something with upload progress
                                    var per= Math.round( percentComplete );

//per gives you percentage of progress

                                }
                            }, false);
                            //Download progress
                            xhr.addEventListener("progress", function(evt){
                                if (evt.lengthComputable) {
                                    var percentComplete = (evt.loaded / evt.total)*100;
                                    //Do something with download progress
                                    var per= Math.round( percentComplete );
                                      //per gives you percentage complete of process

                                }
                            }, false);
                            return xhr;
                        },
                        url:'your url here',
                        data:{'data':data},
                        type:"POST",
                        success:function(n){
                           //ajax completion handler
                        }
                    });
于 2013-06-05T12:10:55.827 に答える