0

Both html and java script files are on the same page

HTML code corresponding to it is:

<body>
    <div id="outer_pog">
        <div id="inner_pog">
        </div>
    </div>
    <form action="index.php" method="post" id="myform" enctype="multipart/form-data" target="hidden_frame">
        <input type="hidden" value="myform" name="<?php echo ini_get("session.upload_progress.name");  ?>" />
        <input type="file" name="userfile" />   <br/>
        <input type="submit" value="start upload" />

    </form>
    <iframe name="hidden_frame" style="display: none;"></iframe>
    <span></span>
</body>

javascript code is:

$(function(){
        $('#myform').submit(function(e){      
          $.get('progress.php',function(dt){
             $('span').html(dt);
             setTimeout(prog,1000);
          });
        })
     });
     function prog(){
         $.get('progress.php',function(dt){
             $('span').html(dt);
             if(dt<100)
             {
                 setTimeout(prog,1000);
             }
          });
     }

when I run this i always getting 100 in return,when I debugged it in netbean value of $_SESSION[$key] is always array[0].

php code i.e progress.php , is below:

<?php
session_start();
$key=  ini_get("session.upload_progress.prefix")."myform";
if(!empty($_SESSION[$key])){
 $cur=$_SESSION[$key]['bytes_processed'];
 $tot=$_SESSION[$key]['content_length'];
 echo $cur<$tot ? ceil($cur/$tot*100) : 100;
 }
else
echo 100;
?>
4

2 回答 2

0

$key 变量的值是多少?有没有?
如果您检查源代码,是否有隐藏输入的名称?

php.net中的顶部评论指出:“注意,当您的网络服务器通过 FastCGI 运行 PHP 时,此功能不起作用。会话数组中将没有进度信息。不幸的是,PHP 仅在上传后才获取数据已完成,无法显示任何进展。”

因此,请检查您的网络服务器设置。

但是,我建议你使用 jQuery 的uploadify插件。

于 2013-05-30T14:08:43.677 回答
0
$('#myform').submit(function(e){
e.preventDefault();
...
于 2013-05-30T12:53:35.420 回答