2011-12-29 11 views
2

私は私のコントローラによって呼び出され、私のモデル、中にいくつかの方法があります。クライアントでは、モデルメソッドが実行されている間に進捗バーを更新したいと思います。私はその進捗状況を取得するためのコントローラと通信するにはどうすればよいCodeIgniterのとプログレスバー

+2

は、たぶん私は何かが欠けています....しかし、私は、あなたが求めているものを任意の手掛かりを持っていません。あなたは何を求めているのかを明確にしてください。 –

+0

私は彼が、コントローラが動作している間、クライアント上の進行状況バーを更新したいと思うと思います。 –

+0

progressBarを実装して、実際のジョブアプリケーションを表示する方法は? – systemiv

答えて

1

PHPはサーバー側であり、それがその作業を完了したときの結果がブラウザに送信されるので、あなたは、PHPを使ってこれを行うことはできません。

JavaScriptを使用してAJAX呼び出しを行うことができます(Googleでページを読み込まずにサーバーに電話をかける方法です)、モデルのメソッドが完了するたびに進行状況に「読み込み」を追加できますJSを使用してバー。本当にPHPで

0

を完了しているどのくらいのアクションの知る方法はありませんが、Apacheとnginxの経由でファイルのアップロードでこれを行う方法は、しかし、あなたの状況には適用されないことがあります。それをやっての

一つの方法は、アップデートを探し、それが変化したときにフロントエンドに更新するために、あなたのコントローラの専用コントローラや方法を監視するために、AJAXロングポーリングを使用することです。あなたはこの仕事をするためにAJAX /ロングポーリングを必要とすることを

3

真。ここにXMLHttpRequest2があります。そして私にとって、これはウェブを次のレベルに引き上げました。それを使用するためのその時間。私はjqueryでそれを使用しました。私がやったことをもっと理解するのはおそらくもっと簡単でしょう。それを動作させるために少し微調整が必​​要になるかもしれません。ここに行く..

$.ajax({ 
type: 'POST/GET', 
url: "link/to/controller/method", 
data: {whatever = 'foo'}, 
beforeSend: function(XMLHttpRequest) 
{ 
    //Upload progress 
    XMLHttpRequest.upload.addEventListener("progress", function(evt){ 
    if (evt.lengthComputable) { 
    var percentComplete = evt.loaded/evt.total; 
    $(".jquery-uploadbar-selector").progressbar({ value: percentComplete }); //jquery progress bar for upload 
    //incase you wanted an upload bar 
    } 
}, false); 
//Download progress 
XMLHttpRequest.addEventListener("progress", function(evt){ 
    if (evt.lengthComputable) { 
    var percentComplete = evt.loaded/evt.total; 
    $(".jquery-downloadbar-selector").progressbar({ value: percentComplete }); 
    //jquery progress bar for download or in other words The real answer for question 
    } 
}, false); 
}, 
success: function(data){ 
    //Here goes the end of what you have done.. I would just type.. 
    console.log('Yay!! I guess, I ve answered my first bounty question and hoping to see it work well.'); 
} 
}); 

私はどこか間違っているかどうかを教えてください。

0
  1. は、クライアントとのオープンHTTP接続(ユーザー)を持っていて、ジョブを開始するとき(isWaiting = 1)あなたのクライアントにデータを送信したり、ASIQが言ったように、AJAXポーリングを行い、ステータスをisWaitingフェッチ。 HTMLクライアント側のページで
  2. 、この内部のbodyタグ
<div class="overlay" style="display:none;"></div> 

とCSS

を持つときisWaiting = 1

  • htmlページプログレスバーをロードするためのjavascript。オーバーレイ{幅:100%;高さ:100%; z-インデックス:5000;左:0;/IE/top:0; text-align:center;位置:固定; 背景:url( 'https://memberschemes.rics.org/MembersPortal/images/ajax_loader-2.gif')ノーリピート固定センターセンター。 背景色:#EFEFEF; 不透明度:0.7; /* 背景:#F4F4F4; background-repeat:no-repeat; バックグラウンドポジション:center; * /}

  • 関連する問題