Javascript没有更新页面和进度条

时间:2011-11-02 15:26:26

标签: javascript

我遇到了一些javascript / jquery和数据库连接的问题。

基本上我想:

connect to a database -
update progress bar -
open a recordset - 
update progress bar.

唯一的问题是进度条和其他一些文本不会更新。我试过环顾四周但却找不到适合我所做的答案。

我目前的代码是:

<link rel="stylesheet" href="serveraddress\jquery.ui.all.css">
<script src="localaddress\jquery-1.6.2.js"></script>
<script src="localaddress\jquery.ui.core.js"></script>
<script src="localaddress\jquery.ui.widget.js"></script>
<script src="localaddress\jquery.ui.datepicker.js"></script>
<script src="localaddress\jquery.ui.progressbar.js"></script>
<script type="text/javascript" src="localaddress\jquery.selectBox.min.js"></script>
<link rel="stylesheet" href="localaddress\jquery.selectBox.css"></script>

我的JavaScript代码:

var global = this;
global.CrntAItem = 'Date'
function changeagent(agnttype,aitem){
    global.atype = "agnt"
    var innerHTMLstring = ""
    if(global.CrntAItem!='Date') {
        document.getElementById(CrntAItem).style.color = '#818181';}
    else{global.CrntAItem=aitem;}
    global.CrntAItem=aitem
    if(agnttype=='agnt'){
        document.body.style.cursor = 'wait'
        document.getElementById(CrntAItem).style.color = '#F79433';
        document.getElementById(CrntAItem).innerHTML = 'Loading...';
        var dbConnString =""
        var startvalue = 50
        var pgrssvalue = 0
        var SQL = "select * from 1ccAgentsQuery";
        var rs = new ActiveXObject("ADODB.Recordset"); 
        var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ='client side database path here';Jet OLEDB:Database Password=passwordhere;Persist Security Info=False"; 
        var cn = new ActiveXObject("ADODB.Connection"); 
        cn.Open(strConn); 
        pgrssvalue = pgrssvalue + startvalue
        $( "#progressbar" ).progressbar({value: pgrssvalue})
        rs.Open(SQL,cn,1,1)
        global.pgrssvalue = global.pgrssvalue + startvalue
        $( "#progressbar" ).progressbar({value: global.pgrssvalue})

        if(rs.eof==true){alert("No Agents in Work Type");return;}
        rs.movefirst
        var x=rs.recordcount;
    }
}

对不起,如果这是基本的或完全混乱,我正在学习,因为我要去,我有一些限制(这就是为什么我使用某些代码而不是其他人。

变量的一些快速事项:
CrntAItem在代码中是<span>,上面的函数可以解决点击问题 agnttype可以等于“agnt”或“dept”

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

尝试使用计时器异步运行“繁重”任务。

将相关的代码块更改为:

//....no change here....
var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ='client side database path here';Jet OLEDB:Database Password=passwordhere;Persist Security Info=False"; 
        var cn = new ActiveXObject("ADODB.Connection"); 

//change to use timer:
window.setTimeout(function() {
    cn.Open(strConn);
    pgrssvalue = pgrssvalue + startvalue;
    $("#progressbar").progressbar({value: pgrssvalue});
    window.setTimeout(function() {
        rs.Open(SQL,cn,1,1);
        global.pgrssvalue = global.pgrssvalue + startvalue;
        $("#progressbar").progressbar({value: global.pgrssvalue});
        if(rs.eof==true)
            alert("No Agents in Work Type");
        else {
            rs.movefirst
            var x=rs.recordcount;
            //logic using x here......
        }
    }, 100);
}, 100);

注意“逻辑使用x here”注释 - 通过使用异步代码,您还必须更改逻辑并在计时器中执行所有操作 - 如果需要进一步的指导,请使用recordcount发布代码。