各位大神,俺的AJAX上传文件可以上传,但无法获取回调值,请帮忙看看。用FF查看错误,提示为:missing ) in parentetical代码如下:(function(){
function addEvent( node,type,listener) {
    if (node.addEventListener) {
     
        node.addEventListener( type, listener, false );
        return true;
    } else if(node.attachEvent) {
        
        node['e'+type+listener] = listener;
        node[type+listener] = function(){node['e'+type+listener]( window.event );}
        node.attachEvent( 'on'+type, node[type+listener] );
        return true;
    }
    
    return false;
};
var submit=document.forms["myform"];
addEvent(submit,'submit',startUpload);
var begin;
var request;
var rdm;
var pec=document.getElementById("pecent");
function startUpload()
{
    rdm=Math.floor(Math.random()*100000000);
document.getElementById('re').setAttribute('value',rdm);
document.getElementById("progress").style['display']='block';
//creatXmlHttpRequest();
begin=setTimeout(doRequest,1000);
};
function creatXmlHttpRequest()
{
    if(window.ActiveXObject)
    {request=new ActiveXObject("Microsoft.XMLHTTP")}
    else{request=new XMLHttpRequest();}
};
var count=0;
function doRequest()
   {
       if(window.ActiveXObject)
    {request=new ActiveXObject("Microsoft.XMLHTTP");}
    else{request=new XMLHttpRequest();}       if(request!=null){
       request.onreadystatechange=handle;
       request.open("GET","upload.php?key="+rdm+"&sim=" + (++count),true);
       request.send();
       }
   };
function handle(){
if(request.readyState==4&&request.status==200)
{
//接受服务器数据
var pec=document.getElementById("pecent");
var prgs=eval("(" +request.responseText + ")");
var prgs=request.responseText;
var cur=parseInt(prgs.current);
var total=parseInt(prgs.total);
var pecentIs=Math.round(cur/total*100);
pec.innerHTML=pecentIs.toString()+"%";
if(100==pecentIs)
{
document.getElementById("rst").innerHTML="上传成功";
pec.style['width']="200px";
clearTimeout(begin);

}else{
begin=setTimeout(doRequest,1000);
alert(pecentIs);
pec.style['width']=pecentIs*2;
}
}
};
})();

解决方案 »

  1.   

    var prgs = eval("(" + request.responseText + ")");
    var prgs = request.responseText;把红色那句去掉,确保你返回的是json
      

  2.   


    这个是我写错了,但不是这个引发的问题。去掉之后还是没有获取值。代码中需要获取的值是:
    pec.innerHTML=pecentIs.toString()+"%";
     document.getElementById("rst").innerHTML="上传成功";这两句,并没有起作用,对用的id为rst的元素没有获取到值。
    请赐教下。
      

  3.   

    html代码为:<table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="30%">
          <iframe style="display:none" name="ifm"></iframe>
      <form enctype="multipart/form-data" method="POST" action="upload.php" target="ifm" name="myform">
      <input type="hidden" name="APC_UPLOAD_PROGRESS" id="re" >
      <input type="file" name="upfile"/>
      <input type="submit" value="上传" name="sub"/>
      </form></td>
        <td width="70%" align="left"><div id="progress" class="before"><div id="pecent"></div></div>
        <div id="rst">测试状态</div></td>
      </tr>
    </table>
      

  4.   


    if(request.readyState==4){
       if(request.status==200){
           //接受服务器数据
            ////
       }
    }
      

  5.   


    用fidder2监视下,看看返回数据没,有就去检查你的回掉,没有就看看发送请求那块
      

  6.   

     function handle() {
                if (request.readyState == 4 && request.status == 200) {
                    //接受服务器数据
    alert( request.responseText)///////看返回了什么,不符合JSON格式的内容eval肯定会报错了
                    var pec = document.getElementById("pecent");
                    var prgs = eval("(" + request.responseText + ")");
      

  7.   

    版主出马  果然手到擒来这是php没有安装apc扩展,这就有点郁闷了。话说又不是自己的空间,主机商多半不鸟我 ,这个坎迈不过去了。我去研究下怎么搞定先。