AJAX 调用不显示新数据


ajax call does not display the new data

我有一个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);
?>

如何解决?

当您调用jQuery.ajax()并且没有像附加.done()回调一样在回调时.fail()附加到返回的 Deferred 对象时,如果请求因任何原因失败,您将一无所获。

因此,我们可以在这里确定的是您的请求失败。 或者一开始就没有运行。

要追踪此类问题,请使用Firebug或Chrome内置的开发人员工具。 它们都有一个"网络"选项卡,向您显示浏览器发出的所有请求以及完整的详细信息。 您可以使用它们来确定请求是否实际启动以及结果。