日期:2014-05-17  浏览次数:20834 次

firefox浏览器下,dojo通过ajax,json异步刷新速度太慢的问题!(有分后再追加100分!)
HTML code
function getColumnValue(target){
    var columnName=target.getAttribute("columnName");
    var tableName=dojo.byId("tableName").innerHTML;
    curTargetID=target.id;    
    /** dojo version 1.0.2 Ajax */
    pars="tableName="+tableName+"&columnName="+columnName;        
    dojo.xhrGet({
            url:"dCSystemColumnValueServlet?"+pars,
            handleAs:'json',
            // timeout:4000,
            load:function (json,ioArgs){                    
                showColumnValue(json);             
            }, 
            error: function(json)
            {
                //alert("Error");
                var targetDiv=dojo.byId(curTargetID);                
                targetDiv.style.width="200px";
            }
    });
}

function showColumnValue(json){    
    var obj=dojo.fromJson(json);    
    
    var div=document.createElement('div');
    var table=document.createElement('table');
    var tbody=document.createElement("tbody");
    div.className='InnerBox';
    //alert("recordNumber:"+recordNumber);
    
    for(var i=0;i<obj.values.length;i++)
    {
        var columnValue=obj.values[0].value;
         var td=document.createElement('td');
        td.className="DragBoxTd";
        if(columnValue){
            if(columnValue.length>20){
                td.innerHTML=columnValue.substring(0,20)+'...';
            }else{
                td.innerHTML=columnValue;
            }
            if (i%2==0)
            {
                td.style.backgroundColor="#9faed7";
            }else{
                td.style.backgroundColor="#d8ddf1";
            }
        }
        var tr=document.createElement('tr');
        tr.appendChild(td);
        tbody.appendChild(tr);
        table.appendChild(tbody);            
    }



问下,这上面的代码是dojo的ajax去数据库取数据,然后通过json返回对象到页面。
在ie下, var obj=dojo.fromJson(json); 中的obj取到数据的时间不到半秒钟。
但是在firefox2.0下,obj取到数据花了5到7秒钟,这个是为什么?我上网查不到原因。

自己尝试过的方法:
1,开始我还以为是电脑的原因,我换到别的电脑中跑url或者把我的工程部署到别的电脑上,发现也是一样的!
2,我将json换成xml或者text来取数据。发现ie中正常,firefox也是很慢。

问题:怎么解决firefox下dojo通过json取数据慢的问题呢?

------解决方案--------------------
友情up,清明过后来解决!
------解决方案--------------------
我一直用prototype,不过json的问题我们可以这样测试

1 确定你的程序速度,也就是调用的速度
2 确定数据转化为json的速度

可以用date进行测试,用alert报出使用的时间!
另,json数据结构是js内部支持的,在firefox下面不会有问题。 我怀疑是调用的部分有问题。


------解决方案--------------------
IE 和firefox 的javascript版本不一样的吧
------解决方案--------------------
json应该不会比xml或者text慢..