2012-04-16 46 views
0

我有一个Ajax调用应该寻找新的图像文件夹中的每个循环之后,而在下一个周期显示新的图像,但在这里它不能正常工作AJAX调用不显示新数据

是我HTML代码:

<html> 
    <head> 
    <meta http-equiv="refresh" content="1000"/> 
    <title>Slideshow</title> 
    <style type="text/css"> 
     #slideshow { 
     position: relative; 
     } 
     #slideshow, 
     #slideshow img { 
     position: absolute; 
     top: 0px; 
     left: 0px; 
     padding: 15px; 
     border: 1px solid #ccc; 
     background-color: #eee; 
     } 
     #slide { 
     width: 370px; 
     height: 220px; 
     padding: 0; 
     margin: 0 auto; 
     } 
     #myslides { 
     width: 370px; 
     height: 220px; 
     padding: 0; 
     margin: 0 auto; 
     } 

     #myslides img { 
     padding: 10px; 
     border: 1px solid rgb(100,100,100); 
     background-color: rgb(230,230,230); 
     width: 350px; 
     height: 200px; 
     top: 0; 
     left: 0 
     } 

    </style> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
    <script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script> 

    <script type="text/javascript"> 
     function loadSlides() { 
     $.ajax({ 
      type: "GET", 
      url: "loadajax.php" 
     }).done(function(response) { 
      var temp_images = eval("(" + response + ")"); 
      for(ti in temp_images) 
      { 
      //alert(temp_images[ti]); 
      $('#slideshow').append('<img src="images/' + temp_images[ti] + '" alt="">'); 
      } 
      startSlideshow(); 
     }); 
     } 

     function startSlideshow() 
     { 
     $('#slideshow').cycle({ 
      fx: 'fade', 
      speed: 700, 
      timeout: 800 
     }); 
     } 

     $(document).ready(function(){ 
     loadSlides(); 
     }); 
    </script> 
    </head> 
    <body> 
    <div id="slideshow" /> 
    </body> 
</html> 

和我的PHP代码:

<?php 

function returnimages($dirname="./images") { 
    $pattern="([^\s]+(\.(?i)(jpg|png|gif|bmp))$)"; 
    $files = array(); 
    if($handle = opendir($dirname)) { 
    while(false !== ($file = readdir($handle))){ 
     if(preg_match($pattern, $file)){ //if this file is a valid image 
     $files[] = $file; 
     } 
    } 
    closedir($handle); 
    } 
    //sort($files); 
    natcasesort($files); 

    return($files); 
} 

$images = returnimages(); 
echo json_encode($images); 

?> 

如何解决呢?

回答

0

,当你调用jQuery.ajax()不要在.fail()回调以同样的方式为您附加一个.done()回调连接到返回Deferred object,你什么也得不到,如果因任何原因,请求失败。

因此,我们可以在此建立的是您的请求失败。或者不是首先运行。

要追踪这些问题,请使用Firebug或嵌入到chrome中的开发人员工具。他们都有一个“网络”选项卡,向您显示浏览器提出的所有请求以及详细信息。您可以使用这些来确定请求是否实际启动以及结果。

+0

我安装了firebug,并从日志中看起来一切正常,但似乎它从缓存中重新加载eveything,有没有办法在下一个周期之前清除缓存? http://i43.tinypic.com/2cn8klf.jpg – user1325414 2012-04-16 04:20:05

+0

按住Shift键的同时点击重新加载按钮通常会有诀窍。 – 2012-04-16 04:33:26