ajax只执行第一次迭代

时间:2014-07-09 08:53:25

标签: javascript php jquery ajax

    <?php 
    error_reporting(0);
    //$SITE_URL="http://shreebalajiinfotech.com/Android/Download_videos/";
    $SITE_URL="http://localhost/";
    $DIR="Videos";
    if($_REQUEST['category']=="")
    {
        echo 'Please pass folder name';
    }
    $dir    = $_REQUEST['category'];  
    $result = array();
    $SUB=$DIR ."/" .$dir;
    //var_dump(is_dir($DIR ."/" .$dir));
    //$image="http://shreebalajiinfotech.com/Android/Download_videos/Videos/test1/119064635524.jpg";
    $cdir = scandir($SUB); 
    //$files2 = scandir($dir, 1);
    //print_r($cdir);       
    ?>      
        <div id="video_container">
        <?php           
        foreach ($cdir as $value)
         //for ($i=0; $i<count($cdir); $i++) 
         {
       //  if ($cdir[$i] != '.' && $cdir[$i] != '..') 
         //{
        //{             
        if (!in_array($value,array(".","..")))
        {
            /*echo "<pre>";
            var_dump(each($value));
            echo "</pre>";
            echo $value;
            */              
            //echo $key[$value];                
            //print_r($cdir[$i]);
            $values=explode('.',$value);                
            if($values[1]=="mp4")
            {                   
                //$result[]=$value;
                //echo $cdir[$i];
                //echo "<br/>";
        ?>
        <script src="jquery.min.js"></script>
        <script type='text/javascript'>
        window.onload = function (){
       // $(document).ready(function(e) {
         //$('#submit<?=$value;?>').click({   
        var video = document.getElementById('my_video_<?=$value;?>');
        var thecanvas = document.getElementById('thecanvas');
        var img = document.getElementById('thumbnail_img');
        var div = document.getElementById('Imagecontainer');
        var sources = document.getElementById('video<?=$value;?>');
        alert(sources.src);
        var videoname=sources.src.substring(sources.src.lastIndexOf('/')+1);
            setTimeout(video.pause(draw(video, thecanvas, img,videoname)),6000);
         if(video.paused==true)
         {
                setTimeout(video.play(),2000);
         }
         function draw( video, thecanvas, img,videoname )
         {
         alert(video);
        // get the canvas context for drawing
        var context = thecanvas.getContext('2d');
        // draw the video contents into the canvas x, y, width, height
        context.drawImage( video, 0, 0, thecanvas.width, thecanvas.height);
        // get the image data from the canvas object
        var dataURL = thecanvas.toDataURL();
         alert(dataURL);
        // set the source of the img tag
        var img1 = document.createElement('img');   
        img1.setAttribute('src', dataURL);  
        document.getElementById('Imagecontainer').appendChild(img1);
        img1.setAttribute('src', dataURL);
        $.ajax({
        type: "POST",
        url: "upload.php",
        data: {image: dataURL,folder:'<?=$_REQUEST['category'];?>',videoname:videoname},
        success: function(response) { 
                alert(response);
               }
                });
       }
        };
        </script>
        <video id="my_video_<?=$value;?>" class="<?=$value;?>" controls autoplay>
        <source id="video<?=$value;?>" src="<?=$SITE_URL.$SUB ."/".$value;?>" type="video/mp4"  />
        </video>
           <canvas id="thecanvas">
        </canvas>
        <div id="Imagecontainer"></div>
        <img id="thumbnail_img" alt="Right click to save"/>
        <?php
        }
        ?>
        <br/>
        <?php
        }
        }
    ?> </div>            

以上代码仅针对foreach循环中的第一个元素进行迭代。对于其他元素,它有时只需要第一个元素的值,但有时会受到挤压。 for each循环只在windows load事件上执行,如何让这个脚本为另一个事件执行。

1 个答案:

答案 0 :(得分:0)

你试图在你的foreach循环中做太多事情。它吐出了大量的window.onload功能,这对于那些试图理解你的意图的糟糕浏览器毫无意义。在这种情况下,我认为你应该将你在php中的视频文件数组传递给javascript数组。类似的东西:

<script type='text/javascript'>     
    window.onload = function (){
        var videos = <?php echo json_encode($cdir); ?>

        for(var i = 0; i < videos.length; i++)
        {
            //Setup each video
        }
    };
</script>

这可以通过以称为&#34; javascript对象表示法&#34;的格式对php数组进行编码,javascript可以方便地用来创建数组。一旦你有了javascript而不是php的数组,你就可以遍历客户端的每一个,里面 window.onload函数,这将解决你所拥有的问题。