バックグラウンドと同期:アップロード/インポートの進捗状況をリアルタイムで確認
4878 ワード
, csv 。 , , , csv 10 , 10 , 2 30 10 , 。 , ( , ), ( )。 , 1000 , 4 , 。 , 。 , 。。。 , 。
html , csv , form.submit , formObj 。
: XMLHttpRequest
( http://blog.csdn.net/qinpeng100423/article/details/8637797
http://blog.csdn.net/liujiahan629629/article/details/17126727)
-- -- -- 1. //
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
2.コールバックメソッドの var xhr = new window.XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState > 2){
var tmpText = xhr.responseText.substring(oldSize);
oldSize = xhr.responseText.length;
if(tmpText.length > 0 ){
//
t.innerHTML = tmpText + "/6";
//
var width = parseInt(tmpText)/6*300;
bg.style.width = width+"px";
}
}
if(xhr.readyState == 4){
//
t.innerHTML = " ";
bg.style.width = "300px";
}
}
3.サーバと するパラメータの xhr.open("get",url);
xhr.setRequestHeader("Content-type","application/x-www-four-urlencoded");
4.サーバへのデータ
var xmlMessage = buildPOST(frm);// を て
xhr.send(xmlMessage);
で が つかりました. するときにフォームを って かないで、フォームのnameをサーバーに える を つけました. function buildPOST(theFormName) {
var theForm=new Array();
theForm = document.getElementById("frm") ;
var qs = ''
for (e=0;e
フォームが できてからまた しい にぶつかって、 は できなくて、、、これはまた のモジュールで、 えにくいです.
プログラムをよく て、 の を えました.クライアント・ループでクエリー・リクエストを し、データがある は バーを します.
Aクラスはページ にオブジェクトを し、Bはメソッドを び すときに するので、 をAクラスに し、AクラスをBクラスのメンバー に します.このようにAが するとカウントできます.
な き は のとおりです.
htmlの
JSの // Excel
function ImportAttachment()
{
$("#pageloading").show();
var url = '';
var frm = window.document.frm;
frm.action = url;
frm.submit();
window.setInterval(refreshDiv,1000); //
}
//
function refreshDiv(){
var url="AAAAA.dll?page=AAAAAA&pcmd=getMsgid";
var httpRet = AjaxHttpGet(url);
var xmlRet = Xparse(httpRet);
var checkCount = xmlRet.getValueByName("checkCount");
var sumCount = xmlRet.getValueByName("sumCount");
var insertCount = xmlRet.getValueByName("insertCount");
if(sumCount<1)
return false;
var a = parseInt(checkCount)+2;
mCheckProgress.value=a/sumCount*100;
progressCheckText.innerHTML = a+"/"+sumCount;
mInsertProgress.value=insertCount/sumCount*100;
progressInsertText.innerHTML = insertCount+"/"+sumCount;
}
サーバ void BBBBBB::getMsgid()
{
m_webPage & ""& cFileImportProc->sumCount &" ";
m_webPage & ""& cFileImportProc->checkCount &" ";
m_webPage & ""& cFileImportProc->insertCount &" ";
return;
}
これで できます